Coverage Report

Created: 2024-07-05 02:31

D:\a\vk-layer-for-rust\vk-layer-for-rust\vulkan-layer\src\global_simple_intercept\generated.rs
Line
Count
Source (jump to first uncovered line)
1
// Copyright 2024 Google LLC
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#![allow(missing_docs)]
16
// This file is generated from the Vulkan XML API registry.
17
#![allow(unused_unsafe)]
18
use ash::vk;
19
use smallvec::smallvec;
20
use std::{
21
    borrow::Borrow,
22
    collections::HashSet,
23
    ffi::{c_char, c_int, c_void, CStr},
24
    ptr::NonNull,
25
    sync::Arc,
26
};
27
28
use super::{
29
    get_device_proc_addr_loader, get_instance_proc_addr_loader, ApiVersion, Feature,
30
    TryFromExtensionError, VulkanCommand,
31
};
32
use crate::{
33
    fill_vk_out_array, DeviceHooks, DeviceInfo, Global, InstanceHooks, InstanceInfo, Layer,
34
    LayerResult, LayerVulkanCommand,
35
};
36
37
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
38
pub enum Extension {
39
    KHRSurface,
40
    KHRSwapchain,
41
    KHRDisplay,
42
    KHRDisplaySwapchain,
43
    KHRXlibSurface,
44
    KHRXcbSurface,
45
    KHRWaylandSurface,
46
    KHRAndroidSurface,
47
    KHRWin32Surface,
48
    KHRSamplerMirrorClampToEdge,
49
    KHRVideoQueue,
50
    KHRVideoDecodeQueue,
51
    KHRVideoDecodeH264,
52
    KHRDynamicRendering,
53
    KHRMultiview,
54
    KHRGetPhysicalDeviceProperties2,
55
    KHRDeviceGroup,
56
    KHRShaderDrawParameters,
57
    KHRMaintenance1,
58
    KHRDeviceGroupCreation,
59
    KHRExternalMemoryCapabilities,
60
    KHRExternalMemory,
61
    KHRExternalMemoryWin32,
62
    KHRExternalMemoryFd,
63
    KHRWin32KeyedMutex,
64
    KHRExternalSemaphoreCapabilities,
65
    KHRExternalSemaphore,
66
    KHRExternalSemaphoreWin32,
67
    KHRExternalSemaphoreFd,
68
    KHRPushDescriptor,
69
    KHRShaderFloat16Int8,
70
    KHR16bitStorage,
71
    KHRIncrementalPresent,
72
    KHRDescriptorUpdateTemplate,
73
    KHRImagelessFramebuffer,
74
    KHRCreateRenderpass2,
75
    KHRSharedPresentableImage,
76
    KHRExternalFenceCapabilities,
77
    KHRExternalFence,
78
    KHRExternalFenceWin32,
79
    KHRExternalFenceFd,
80
    KHRPerformanceQuery,
81
    KHRMaintenance2,
82
    KHRGetSurfaceCapabilities2,
83
    KHRVariablePointers,
84
    KHRGetDisplayProperties2,
85
    KHRDedicatedAllocation,
86
    KHRStorageBufferStorageClass,
87
    KHRRelaxedBlockLayout,
88
    KHRGetMemoryRequirements2,
89
    KHRImageFormatList,
90
    KHRSamplerYcbcrConversion,
91
    KHRBindMemory2,
92
    KHRPortabilitySubset,
93
    KHRMaintenance3,
94
    KHRDrawIndirectCount,
95
    KHRShaderSubgroupExtendedTypes,
96
    KHR8bitStorage,
97
    KHRShaderAtomicInt64,
98
    KHRShaderClock,
99
    KHRVideoDecodeH265,
100
    KHRGlobalPriority,
101
    KHRDriverProperties,
102
    KHRShaderFloatControls,
103
    KHRDepthStencilResolve,
104
    KHRSwapchainMutableFormat,
105
    KHRTimelineSemaphore,
106
    KHRVulkanMemoryModel,
107
    KHRShaderTerminateInvocation,
108
    KHRFragmentShadingRate,
109
    KHRSpirv14,
110
    KHRSurfaceProtectedCapabilities,
111
    KHRSeparateDepthStencilLayouts,
112
    KHRPresentWait,
113
    KHRUniformBufferStandardLayout,
114
    KHRBufferDeviceAddress,
115
    KHRDeferredHostOperations,
116
    KHRPipelineExecutableProperties,
117
    KHRMapMemory2,
118
    KHRShaderIntegerDotProduct,
119
    KHRPipelineLibrary,
120
    KHRShaderNonSemanticInfo,
121
    KHRPresentId,
122
    KHRVideoEncodeQueue,
123
    KHRSynchronization2,
124
    KHRFragmentShaderBarycentric,
125
    KHRShaderSubgroupUniformControlFlow,
126
    KHRZeroInitializeWorkgroupMemory,
127
    KHRWorkgroupMemoryExplicitLayout,
128
    KHRCopyCommands2,
129
    KHRFormatFeatureFlags2,
130
    KHRRayTracingMaintenance1,
131
    KHRPortabilityEnumeration,
132
    KHRMaintenance4,
133
    KHRRayTracingPositionFetch,
134
    ANDROIDNativeBuffer,
135
    EXTDebugReport,
136
    NVGlslShader,
137
    EXTDepthRangeUnrestricted,
138
    IMGFilterCubic,
139
    AMDRasterizationOrder,
140
    AMDShaderTrinaryMinmax,
141
    AMDShaderExplicitVertexParameter,
142
    EXTDebugMarker,
143
    AMDGcnShader,
144
    NVDedicatedAllocation,
145
    EXTTransformFeedback,
146
    NVXBinaryImport,
147
    NVXImageViewHandle,
148
    AMDDrawIndirectCount,
149
    AMDNegativeViewportHeight,
150
    AMDGpuShaderHalfFloat,
151
    AMDShaderBallot,
152
    EXTVideoEncodeH264,
153
    EXTVideoEncodeH265,
154
    AMDTextureGatherBiasLod,
155
    AMDShaderInfo,
156
    AMDShaderImageLoadStoreLod,
157
    GGPStreamDescriptorSurface,
158
    NVCornerSampledImage,
159
    IMGFormatPvrtc,
160
    NVExternalMemoryCapabilities,
161
    NVExternalMemory,
162
    NVExternalMemoryWin32,
163
    NVWin32KeyedMutex,
164
    EXTValidationFlags,
165
    NNViSurface,
166
    EXTShaderSubgroupBallot,
167
    EXTShaderSubgroupVote,
168
    EXTTextureCompressionAstcHdr,
169
    EXTAstcDecodeMode,
170
    EXTPipelineRobustness,
171
    EXTConditionalRendering,
172
    NVClipSpaceWScaling,
173
    EXTDirectModeDisplay,
174
    EXTAcquireXlibDisplay,
175
    EXTDisplaySurfaceCounter,
176
    EXTDisplayControl,
177
    GOOGLEDisplayTiming,
178
    NVSampleMaskOverrideCoverage,
179
    NVGeometryShaderPassthrough,
180
    NVViewportArray2,
181
    NVXMultiviewPerViewAttributes,
182
    NVViewportSwizzle,
183
    EXTDiscardRectangles,
184
    EXTConservativeRasterization,
185
    EXTDepthClipEnable,
186
    EXTSwapchainColorspace,
187
    EXTHdrMetadata,
188
    MVKIosSurface,
189
    MVKMacosSurface,
190
    EXTExternalMemoryDmaBuf,
191
    EXTQueueFamilyForeign,
192
    EXTDebugUtils,
193
    ANDROIDExternalMemoryAndroidHardwareBuffer,
194
    EXTSamplerFilterMinmax,
195
    AMDGpuShaderInt16,
196
    AMDMixedAttachmentSamples,
197
    AMDShaderFragmentMask,
198
    EXTInlineUniformBlock,
199
    EXTShaderStencilExport,
200
    EXTSampleLocations,
201
    EXTBlendOperationAdvanced,
202
    NVFragmentCoverageToColor,
203
    NVFramebufferMixedSamples,
204
    NVFillRectangle,
205
    NVShaderSmBuiltins,
206
    EXTPostDepthCoverage,
207
    EXTImageDrmFormatModifier,
208
    EXTValidationCache,
209
    EXTDescriptorIndexing,
210
    EXTShaderViewportIndexLayer,
211
    NVShadingRateImage,
212
    NVRayTracing,
213
    NVRepresentativeFragmentTest,
214
    EXTFilterCubic,
215
    QCOMRenderPassShaderResolve,
216
    EXTGlobalPriority,
217
    EXTExternalMemoryHost,
218
    AMDBufferMarker,
219
    AMDPipelineCompilerControl,
220
    EXTCalibratedTimestamps,
221
    AMDShaderCoreProperties,
222
    AMDMemoryOverallocationBehavior,
223
    EXTVertexAttributeDivisor,
224
    GGPFrameToken,
225
    EXTPipelineCreationFeedback,
226
    NVShaderSubgroupPartitioned,
227
    NVComputeShaderDerivatives,
228
    NVMeshShader,
229
    NVFragmentShaderBarycentric,
230
    NVShaderImageFootprint,
231
    NVScissorExclusive,
232
    NVDeviceDiagnosticCheckpoints,
233
    INTELShaderIntegerFunctions2,
234
    INTELPerformanceQuery,
235
    EXTPciBusInfo,
236
    AMDDisplayNativeHdr,
237
    FUCHSIAImagepipeSurface,
238
    EXTMetalSurface,
239
    EXTFragmentDensityMap,
240
    EXTScalarBlockLayout,
241
    GOOGLEHlslFunctionality1,
242
    GOOGLEDecorateString,
243
    EXTSubgroupSizeControl,
244
    AMDShaderCoreProperties2,
245
    AMDDeviceCoherentMemory,
246
    EXTShaderImageAtomicInt64,
247
    EXTMemoryBudget,
248
    EXTMemoryPriority,
249
    NVDedicatedAllocationImageAliasing,
250
    EXTBufferDeviceAddress,
251
    EXTToolingInfo,
252
    EXTSeparateStencilUsage,
253
    EXTValidationFeatures,
254
    NVCooperativeMatrix,
255
    NVCoverageReductionMode,
256
    EXTFragmentShaderInterlock,
257
    EXTYcbcrImageArrays,
258
    EXTProvokingVertex,
259
    EXTFullScreenExclusive,
260
    EXTHeadlessSurface,
261
    EXTLineRasterization,
262
    EXTShaderAtomicFloat,
263
    EXTHostQueryReset,
264
    EXTIndexTypeUint8,
265
    EXTExtendedDynamicState,
266
    EXTShaderAtomicFloat2,
267
    EXTSurfaceMaintenance1,
268
    EXTSwapchainMaintenance1,
269
    EXTShaderDemoteToHelperInvocation,
270
    NVDeviceGeneratedCommands,
271
    NVInheritedViewportScissor,
272
    EXTTexelBufferAlignment,
273
    QCOMRenderPassTransform,
274
    EXTDeviceMemoryReport,
275
    EXTAcquireDrmDisplay,
276
    EXTRobustness2,
277
    EXTCustomBorderColor,
278
    GOOGLEUserType,
279
    NVPresentBarrier,
280
    EXTPrivateData,
281
    EXTPipelineCreationCacheControl,
282
    NVDeviceDiagnosticsConfig,
283
    QCOMRenderPassStoreOps,
284
    NVLowLatency,
285
    EXTMetalObjects,
286
    EXTDescriptorBuffer,
287
    EXTGraphicsPipelineLibrary,
288
    AMDShaderEarlyAndLateFragmentTests,
289
    NVFragmentShadingRateEnums,
290
    NVRayTracingMotionBlur,
291
    EXTYcbcr2plane444Formats,
292
    EXTFragmentDensityMap2,
293
    QCOMRotatedCopyCommands,
294
    EXTImageRobustness,
295
    EXTImageCompressionControl,
296
    EXTAttachmentFeedbackLoopLayout,
297
    EXT4444Formats,
298
    EXTDeviceFault,
299
    ARMRasterizationOrderAttachmentAccess,
300
    EXTRgba10x6Formats,
301
    NVAcquireWinrtDisplay,
302
    EXTDirectfbSurface,
303
    VALVEMutableDescriptorType,
304
    EXTVertexInputDynamicState,
305
    EXTPhysicalDeviceDrm,
306
    EXTDeviceAddressBindingReport,
307
    EXTDepthClipControl,
308
    EXTPrimitiveTopologyListRestart,
309
    FUCHSIAExternalMemory,
310
    FUCHSIAExternalSemaphore,
311
    FUCHSIABufferCollection,
312
    HUAWEISubpassShading,
313
    HUAWEIInvocationMask,
314
    NVExternalMemoryRdma,
315
    EXTPipelineProperties,
316
    EXTMultisampledRenderToSingleSampled,
317
    EXTExtendedDynamicState2,
318
    QNXScreenSurface,
319
    EXTColorWriteEnable,
320
    EXTPrimitivesGeneratedQuery,
321
    EXTGlobalPriorityQuery,
322
    EXTImageViewMinLod,
323
    EXTMultiDraw,
324
    EXTImage2dViewOf3d,
325
    EXTShaderTileImage,
326
    EXTOpacityMicromap,
327
    NVDisplacementMicromap,
328
    EXTLoadStoreOpNone,
329
    HUAWEIClusterCullingShader,
330
    EXTBorderColorSwizzle,
331
    EXTPageableDeviceLocalMemory,
332
    ARMShaderCoreProperties,
333
    EXTImageSlicedViewOf3d,
334
    VALVEDescriptorSetHostMapping,
335
    EXTDepthClampZeroOne,
336
    EXTNonSeamlessCubeMap,
337
    QCOMFragmentDensityMapOffset,
338
    NVCopyMemoryIndirect,
339
    NVMemoryDecompression,
340
    NVLinearColorAttachment,
341
    GOOGLESurfacelessQuery,
342
    EXTImageCompressionControlSwapchain,
343
    QCOMImageProcessing,
344
    EXTExtendedDynamicState3,
345
    EXTSubpassMergeFeedback,
346
    LUNARGDirectDriverLoading,
347
    EXTShaderModuleIdentifier,
348
    EXTRasterizationOrderAttachmentAccess,
349
    NVOpticalFlow,
350
    EXTLegacyDithering,
351
    EXTPipelineProtectedAccess,
352
    EXTShaderObject,
353
    QCOMTileProperties,
354
    SECAmigoProfiling,
355
    QCOMMultiviewPerViewViewports,
356
    NVRayTracingInvocationReorder,
357
    EXTMutableDescriptorType,
358
    ARMShaderCoreBuiltins,
359
    EXTPipelineLibraryGroupHandles,
360
    QCOMMultiviewPerViewRenderAreas,
361
    EXTAttachmentFeedbackLoopDynamicState,
362
    KHRAccelerationStructure,
363
    KHRRayTracingPipeline,
364
    KHRRayQuery,
365
    EXTMeshShader,
366
}
367
368
impl TryFrom<&str> for Extension {
369
    type Error = TryFromExtensionError;
370
371
43
    fn try_from(value: &str) -> Result<Self, Self::Error> {
372
43
        match value {
373
43
            "VK_KHR_surface" => 
Ok(Extension::KHRSurface)16
,
374
27
            "VK_KHR_swapchain" => 
Ok(Extension::KHRSwapchain)16
,
375
11
            "VK_KHR_display" => 
Ok(Extension::KHRDisplay)0
,
376
11
            "VK_KHR_display_swapchain" => 
Ok(Extension::KHRDisplaySwapchain)0
,
377
11
            "VK_KHR_xlib_surface" => 
Ok(Extension::KHRXlibSurface)0
,
378
11
            "VK_KHR_xcb_surface" => 
Ok(Extension::KHRXcbSurface)0
,
379
11
            "VK_KHR_wayland_surface" => 
Ok(Extension::KHRWaylandSurface)0
,
380
11
            "VK_KHR_android_surface" => 
Ok(Extension::KHRAndroidSurface)0
,
381
11
            "VK_KHR_win32_surface" => 
Ok(Extension::KHRWin32Surface)0
,
382
11
            "VK_KHR_sampler_mirror_clamp_to_edge" => 
Ok(Extension::KHRSamplerMirrorClampToEdge)0
,
383
11
            "VK_KHR_video_queue" => 
Ok(Extension::KHRVideoQueue)0
,
384
11
            "VK_KHR_video_decode_queue" => 
Ok(Extension::KHRVideoDecodeQueue)0
,
385
11
            "VK_KHR_video_decode_h264" => 
Ok(Extension::KHRVideoDecodeH264)0
,
386
11
            "VK_KHR_dynamic_rendering" => 
Ok(Extension::KHRDynamicRendering)0
,
387
11
            "VK_KHR_multiview" => 
Ok(Extension::KHRMultiview)0
,
388
11
            "VK_KHR_get_physical_device_properties2" => {
389
7
                Ok(Extension::KHRGetPhysicalDeviceProperties2)
390
            }
391
4
            "VK_KHR_device_group" => 
Ok(Extension::KHRDeviceGroup)0
,
392
4
            "VK_KHR_shader_draw_parameters" => 
Ok(Extension::KHRShaderDrawParameters)0
,
393
4
            "VK_KHR_maintenance1" => 
Ok(Extension::KHRMaintenance1)0
,
394
4
            "VK_KHR_device_group_creation" => 
Ok(Extension::KHRDeviceGroupCreation)0
,
395
4
            "VK_KHR_external_memory_capabilities" => 
Ok(Extension::KHRExternalMemoryCapabilities)2
,
396
2
            "VK_KHR_external_memory" => 
Ok(Extension::KHRExternalMemory)0
,
397
2
            "VK_KHR_external_memory_win32" => 
Ok(Extension::KHRExternalMemoryWin32)0
,
398
2
            "VK_KHR_external_memory_fd" => 
Ok(Extension::KHRExternalMemoryFd)0
,
399
2
            "VK_KHR_win32_keyed_mutex" => 
Ok(Extension::KHRWin32KeyedMutex)0
,
400
2
            "VK_KHR_external_semaphore_capabilities" => {
401
0
                Ok(Extension::KHRExternalSemaphoreCapabilities)
402
            }
403
2
            "VK_KHR_external_semaphore" => 
Ok(Extension::KHRExternalSemaphore)0
,
404
2
            "VK_KHR_external_semaphore_win32" => 
Ok(Extension::KHRExternalSemaphoreWin32)0
,
405
2
            "VK_KHR_external_semaphore_fd" => 
Ok(Extension::KHRExternalSemaphoreFd)0
,
406
2
            "VK_KHR_push_descriptor" => 
Ok(Extension::KHRPushDescriptor)0
,
407
2
            "VK_KHR_shader_float16_int8" => 
Ok(Extension::KHRShaderFloat16Int8)0
,
408
2
            "VK_KHR_16bit_storage" => 
Ok(Extension::KHR16bitStorage)0
,
409
2
            "VK_KHR_incremental_present" => 
Ok(Extension::KHRIncrementalPresent)0
,
410
2
            "VK_KHR_descriptor_update_template" => 
Ok(Extension::KHRDescriptorUpdateTemplate)0
,
411
2
            "VK_KHR_imageless_framebuffer" => 
Ok(Extension::KHRImagelessFramebuffer)0
,
412
2
            "VK_KHR_create_renderpass2" => 
Ok(Extension::KHRCreateRenderpass2)0
,
413
2
            "VK_KHR_shared_presentable_image" => 
Ok(Extension::KHRSharedPresentableImage)0
,
414
2
            "VK_KHR_external_fence_capabilities" => 
Ok(Extension::KHRExternalFenceCapabilities)0
,
415
2
            "VK_KHR_external_fence" => 
Ok(Extension::KHRExternalFence)0
,
416
2
            "VK_KHR_external_fence_win32" => 
Ok(Extension::KHRExternalFenceWin32)0
,
417
2
            "VK_KHR_external_fence_fd" => 
Ok(Extension::KHRExternalFenceFd)0
,
418
2
            "VK_KHR_performance_query" => 
Ok(Extension::KHRPerformanceQuery)0
,
419
2
            "VK_KHR_maintenance2" => 
Ok(Extension::KHRMaintenance2)0
,
420
2
            "VK_KHR_get_surface_capabilities2" => 
Ok(Extension::KHRGetSurfaceCapabilities2)0
,
421
2
            "VK_KHR_variable_pointers" => 
Ok(Extension::KHRVariablePointers)0
,
422
2
            "VK_KHR_get_display_properties2" => 
Ok(Extension::KHRGetDisplayProperties2)0
,
423
2
            "VK_KHR_dedicated_allocation" => 
Ok(Extension::KHRDedicatedAllocation)0
,
424
2
            "VK_KHR_storage_buffer_storage_class" => 
Ok(Extension::KHRStorageBufferStorageClass)0
,
425
2
            "VK_KHR_relaxed_block_layout" => 
Ok(Extension::KHRRelaxedBlockLayout)0
,
426
2
            "VK_KHR_get_memory_requirements2" => 
Ok(Extension::KHRGetMemoryRequirements2)0
,
427
2
            "VK_KHR_image_format_list" => 
Ok(Extension::KHRImageFormatList)0
,
428
2
            "VK_KHR_sampler_ycbcr_conversion" => 
Ok(Extension::KHRSamplerYcbcrConversion)0
,
429
2
            "VK_KHR_bind_memory2" => 
Ok(Extension::KHRBindMemory2)0
,
430
2
            "VK_KHR_portability_subset" => 
Ok(Extension::KHRPortabilitySubset)0
,
431
2
            "VK_KHR_maintenance3" => 
Ok(Extension::KHRMaintenance3)0
,
432
2
            "VK_KHR_draw_indirect_count" => 
Ok(Extension::KHRDrawIndirectCount)0
,
433
2
            "VK_KHR_shader_subgroup_extended_types" => {
434
0
                Ok(Extension::KHRShaderSubgroupExtendedTypes)
435
            }
436
2
            "VK_KHR_8bit_storage" => 
Ok(Extension::KHR8bitStorage)0
,
437
2
            "VK_KHR_shader_atomic_int64" => 
Ok(Extension::KHRShaderAtomicInt64)0
,
438
2
            "VK_KHR_shader_clock" => 
Ok(Extension::KHRShaderClock)0
,
439
2
            "VK_KHR_video_decode_h265" => 
Ok(Extension::KHRVideoDecodeH265)0
,
440
2
            "VK_KHR_global_priority" => 
Ok(Extension::KHRGlobalPriority)0
,
441
2
            "VK_KHR_driver_properties" => 
Ok(Extension::KHRDriverProperties)0
,
442
2
            "VK_KHR_shader_float_controls" => 
Ok(Extension::KHRShaderFloatControls)0
,
443
2
            "VK_KHR_depth_stencil_resolve" => 
Ok(Extension::KHRDepthStencilResolve)0
,
444
2
            "VK_KHR_swapchain_mutable_format" => 
Ok(Extension::KHRSwapchainMutableFormat)0
,
445
2
            "VK_KHR_timeline_semaphore" => 
Ok(Extension::KHRTimelineSemaphore)0
,
446
2
            "VK_KHR_vulkan_memory_model" => 
Ok(Extension::KHRVulkanMemoryModel)0
,
447
2
            "VK_KHR_shader_terminate_invocation" => 
Ok(Extension::KHRShaderTerminateInvocation)0
,
448
2
            "VK_KHR_fragment_shading_rate" => 
Ok(Extension::KHRFragmentShadingRate)0
,
449
2
            "VK_KHR_spirv_1_4" => 
Ok(Extension::KHRSpirv14)0
,
450
2
            "VK_KHR_surface_protected_capabilities" => {
451
0
                Ok(Extension::KHRSurfaceProtectedCapabilities)
452
            }
453
2
            "VK_KHR_separate_depth_stencil_layouts" => {
454
0
                Ok(Extension::KHRSeparateDepthStencilLayouts)
455
            }
456
2
            "VK_KHR_present_wait" => 
Ok(Extension::KHRPresentWait)0
,
457
2
            "VK_KHR_uniform_buffer_standard_layout" => {
458
0
                Ok(Extension::KHRUniformBufferStandardLayout)
459
            }
460
2
            "VK_KHR_buffer_device_address" => 
Ok(Extension::KHRBufferDeviceAddress)0
,
461
2
            "VK_KHR_deferred_host_operations" => 
Ok(Extension::KHRDeferredHostOperations)0
,
462
2
            "VK_KHR_pipeline_executable_properties" => {
463
0
                Ok(Extension::KHRPipelineExecutableProperties)
464
            }
465
2
            "VK_KHR_map_memory2" => 
Ok(Extension::KHRMapMemory2)0
,
466
2
            "VK_KHR_shader_integer_dot_product" => 
Ok(Extension::KHRShaderIntegerDotProduct)0
,
467
2
            "VK_KHR_pipeline_library" => 
Ok(Extension::KHRPipelineLibrary)0
,
468
2
            "VK_KHR_shader_non_semantic_info" => 
Ok(Extension::KHRShaderNonSemanticInfo)0
,
469
2
            "VK_KHR_present_id" => 
Ok(Extension::KHRPresentId)0
,
470
2
            "VK_KHR_video_encode_queue" => 
Ok(Extension::KHRVideoEncodeQueue)0
,
471
2
            "VK_KHR_synchronization2" => 
Ok(Extension::KHRSynchronization2)0
,
472
2
            "VK_KHR_fragment_shader_barycentric" => 
Ok(Extension::KHRFragmentShaderBarycentric)0
,
473
2
            "VK_KHR_shader_subgroup_uniform_control_flow" => {
474
0
                Ok(Extension::KHRShaderSubgroupUniformControlFlow)
475
            }
476
2
            "VK_KHR_zero_initialize_workgroup_memory" => {
477
0
                Ok(Extension::KHRZeroInitializeWorkgroupMemory)
478
            }
479
2
            "VK_KHR_workgroup_memory_explicit_layout" => {
480
0
                Ok(Extension::KHRWorkgroupMemoryExplicitLayout)
481
            }
482
2
            "VK_KHR_copy_commands2" => 
Ok(Extension::KHRCopyCommands2)0
,
483
2
            "VK_KHR_format_feature_flags2" => 
Ok(Extension::KHRFormatFeatureFlags2)0
,
484
2
            "VK_KHR_ray_tracing_maintenance1" => 
Ok(Extension::KHRRayTracingMaintenance1)0
,
485
2
            "VK_KHR_portability_enumeration" => 
Ok(Extension::KHRPortabilityEnumeration)0
,
486
2
            "VK_KHR_maintenance4" => 
Ok(Extension::KHRMaintenance4)0
,
487
2
            "VK_KHR_ray_tracing_position_fetch" => 
Ok(Extension::KHRRayTracingPositionFetch)0
,
488
2
            "VK_ANDROID_native_buffer" => 
Ok(Extension::ANDROIDNativeBuffer)0
,
489
2
            "VK_EXT_debug_report" => 
Ok(Extension::EXTDebugReport)0
,
490
2
            "VK_NV_glsl_shader" => 
Ok(Extension::NVGlslShader)0
,
491
2
            "VK_EXT_depth_range_unrestricted" => 
Ok(Extension::EXTDepthRangeUnrestricted)0
,
492
2
            "VK_IMG_filter_cubic" => 
Ok(Extension::IMGFilterCubic)0
,
493
2
            "VK_AMD_rasterization_order" => 
Ok(Extension::AMDRasterizationOrder)0
,
494
2
            "VK_AMD_shader_trinary_minmax" => 
Ok(Extension::AMDShaderTrinaryMinmax)0
,
495
2
            "VK_AMD_shader_explicit_vertex_parameter" => {
496
0
                Ok(Extension::AMDShaderExplicitVertexParameter)
497
            }
498
2
            "VK_EXT_debug_marker" => 
Ok(Extension::EXTDebugMarker)0
,
499
2
            "VK_AMD_gcn_shader" => 
Ok(Extension::AMDGcnShader)0
,
500
2
            "VK_NV_dedicated_allocation" => 
Ok(Extension::NVDedicatedAllocation)0
,
501
2
            "VK_EXT_transform_feedback" => 
Ok(Extension::EXTTransformFeedback)0
,
502
2
            "VK_NVX_binary_import" => 
Ok(Extension::NVXBinaryImport)0
,
503
2
            "VK_NVX_image_view_handle" => 
Ok(Extension::NVXImageViewHandle)0
,
504
2
            "VK_AMD_draw_indirect_count" => 
Ok(Extension::AMDDrawIndirectCount)0
,
505
2
            "VK_AMD_negative_viewport_height" => 
Ok(Extension::AMDNegativeViewportHeight)0
,
506
2
            "VK_AMD_gpu_shader_half_float" => 
Ok(Extension::AMDGpuShaderHalfFloat)0
,
507
2
            "VK_AMD_shader_ballot" => 
Ok(Extension::AMDShaderBallot)0
,
508
2
            "VK_EXT_video_encode_h264" => 
Ok(Extension::EXTVideoEncodeH264)0
,
509
2
            "VK_EXT_video_encode_h265" => 
Ok(Extension::EXTVideoEncodeH265)0
,
510
2
            "VK_AMD_texture_gather_bias_lod" => 
Ok(Extension::AMDTextureGatherBiasLod)0
,
511
2
            "VK_AMD_shader_info" => 
Ok(Extension::AMDShaderInfo)0
,
512
2
            "VK_AMD_shader_image_load_store_lod" => 
Ok(Extension::AMDShaderImageLoadStoreLod)0
,
513
2
            "VK_GGP_stream_descriptor_surface" => 
Ok(Extension::GGPStreamDescriptorSurface)0
,
514
2
            "VK_NV_corner_sampled_image" => 
Ok(Extension::NVCornerSampledImage)0
,
515
2
            "VK_IMG_format_pvrtc" => 
Ok(Extension::IMGFormatPvrtc)0
,
516
2
            "VK_NV_external_memory_capabilities" => 
Ok(Extension::NVExternalMemoryCapabilities)0
,
517
2
            "VK_NV_external_memory" => 
Ok(Extension::NVExternalMemory)0
,
518
2
            "VK_NV_external_memory_win32" => 
Ok(Extension::NVExternalMemoryWin32)0
,
519
2
            "VK_NV_win32_keyed_mutex" => 
Ok(Extension::NVWin32KeyedMutex)0
,
520
2
            "VK_EXT_validation_flags" => 
Ok(Extension::EXTValidationFlags)0
,
521
2
            "VK_NN_vi_surface" => 
Ok(Extension::NNViSurface)0
,
522
2
            "VK_EXT_shader_subgroup_ballot" => 
Ok(Extension::EXTShaderSubgroupBallot)0
,
523
2
            "VK_EXT_shader_subgroup_vote" => 
Ok(Extension::EXTShaderSubgroupVote)0
,
524
2
            "VK_EXT_texture_compression_astc_hdr" => 
Ok(Extension::EXTTextureCompressionAstcHdr)0
,
525
2
            "VK_EXT_astc_decode_mode" => 
Ok(Extension::EXTAstcDecodeMode)0
,
526
2
            "VK_EXT_pipeline_robustness" => 
Ok(Extension::EXTPipelineRobustness)0
,
527
2
            "VK_EXT_conditional_rendering" => 
Ok(Extension::EXTConditionalRendering)0
,
528
2
            "VK_NV_clip_space_w_scaling" => 
Ok(Extension::NVClipSpaceWScaling)0
,
529
2
            "VK_EXT_direct_mode_display" => 
Ok(Extension::EXTDirectModeDisplay)0
,
530
2
            "VK_EXT_acquire_xlib_display" => 
Ok(Extension::EXTAcquireXlibDisplay)0
,
531
2
            "VK_EXT_display_surface_counter" => 
Ok(Extension::EXTDisplaySurfaceCounter)0
,
532
2
            "VK_EXT_display_control" => 
Ok(Extension::EXTDisplayControl)0
,
533
2
            "VK_GOOGLE_display_timing" => 
Ok(Extension::GOOGLEDisplayTiming)0
,
534
2
            "VK_NV_sample_mask_override_coverage" => 
Ok(Extension::NVSampleMaskOverrideCoverage)0
,
535
2
            "VK_NV_geometry_shader_passthrough" => 
Ok(Extension::NVGeometryShaderPassthrough)0
,
536
2
            "VK_NV_viewport_array2" => 
Ok(Extension::NVViewportArray2)0
,
537
2
            "VK_NVX_multiview_per_view_attributes" => 
Ok(Extension::NVXMultiviewPerViewAttributes)0
,
538
2
            "VK_NV_viewport_swizzle" => 
Ok(Extension::NVViewportSwizzle)0
,
539
2
            "VK_EXT_discard_rectangles" => 
Ok(Extension::EXTDiscardRectangles)0
,
540
2
            "VK_EXT_conservative_rasterization" => 
Ok(Extension::EXTConservativeRasterization)0
,
541
2
            "VK_EXT_depth_clip_enable" => 
Ok(Extension::EXTDepthClipEnable)0
,
542
2
            "VK_EXT_swapchain_colorspace" => 
Ok(Extension::EXTSwapchainColorspace)0
,
543
2
            "VK_EXT_hdr_metadata" => 
Ok(Extension::EXTHdrMetadata)0
,
544
2
            "VK_MVK_ios_surface" => 
Ok(Extension::MVKIosSurface)0
,
545
2
            "VK_MVK_macos_surface" => 
Ok(Extension::MVKMacosSurface)0
,
546
2
            "VK_EXT_external_memory_dma_buf" => 
Ok(Extension::EXTExternalMemoryDmaBuf)0
,
547
2
            "VK_EXT_queue_family_foreign" => 
Ok(Extension::EXTQueueFamilyForeign)0
,
548
2
            "VK_EXT_debug_utils" => 
Ok(Extension::EXTDebugUtils)0
,
549
2
            "VK_ANDROID_external_memory_android_hardware_buffer" => {
550
0
                Ok(Extension::ANDROIDExternalMemoryAndroidHardwareBuffer)
551
            }
552
2
            "VK_EXT_sampler_filter_minmax" => 
Ok(Extension::EXTSamplerFilterMinmax)0
,
553
2
            "VK_AMD_gpu_shader_int16" => 
Ok(Extension::AMDGpuShaderInt16)0
,
554
2
            "VK_AMD_mixed_attachment_samples" => 
Ok(Extension::AMDMixedAttachmentSamples)0
,
555
2
            "VK_AMD_shader_fragment_mask" => 
Ok(Extension::AMDShaderFragmentMask)0
,
556
2
            "VK_EXT_inline_uniform_block" => 
Ok(Extension::EXTInlineUniformBlock)0
,
557
2
            "VK_EXT_shader_stencil_export" => 
Ok(Extension::EXTShaderStencilExport)0
,
558
2
            "VK_EXT_sample_locations" => 
Ok(Extension::EXTSampleLocations)0
,
559
2
            "VK_EXT_blend_operation_advanced" => 
Ok(Extension::EXTBlendOperationAdvanced)0
,
560
2
            "VK_NV_fragment_coverage_to_color" => 
Ok(Extension::NVFragmentCoverageToColor)0
,
561
2
            "VK_NV_framebuffer_mixed_samples" => 
Ok(Extension::NVFramebufferMixedSamples)0
,
562
2
            "VK_NV_fill_rectangle" => 
Ok(Extension::NVFillRectangle)0
,
563
2
            "VK_NV_shader_sm_builtins" => 
Ok(Extension::NVShaderSmBuiltins)0
,
564
2
            "VK_EXT_post_depth_coverage" => 
Ok(Extension::EXTPostDepthCoverage)0
,
565
2
            "VK_EXT_image_drm_format_modifier" => 
Ok(Extension::EXTImageDrmFormatModifier)0
,
566
2
            "VK_EXT_validation_cache" => 
Ok(Extension::EXTValidationCache)0
,
567
2
            "VK_EXT_descriptor_indexing" => 
Ok(Extension::EXTDescriptorIndexing)0
,
568
2
            "VK_EXT_shader_viewport_index_layer" => 
Ok(Extension::EXTShaderViewportIndexLayer)0
,
569
2
            "VK_NV_shading_rate_image" => 
Ok(Extension::NVShadingRateImage)0
,
570
2
            "VK_NV_ray_tracing" => 
Ok(Extension::NVRayTracing)0
,
571
2
            "VK_NV_representative_fragment_test" => 
Ok(Extension::NVRepresentativeFragmentTest)0
,
572
2
            "VK_EXT_filter_cubic" => 
Ok(Extension::EXTFilterCubic)0
,
573
2
            "VK_QCOM_render_pass_shader_resolve" => 
Ok(Extension::QCOMRenderPassShaderResolve)0
,
574
2
            "VK_EXT_global_priority" => 
Ok(Extension::EXTGlobalPriority)0
,
575
2
            "VK_EXT_external_memory_host" => 
Ok(Extension::EXTExternalMemoryHost)0
,
576
2
            "VK_AMD_buffer_marker" => 
Ok(Extension::AMDBufferMarker)0
,
577
2
            "VK_AMD_pipeline_compiler_control" => 
Ok(Extension::AMDPipelineCompilerControl)0
,
578
2
            "VK_EXT_calibrated_timestamps" => 
Ok(Extension::EXTCalibratedTimestamps)0
,
579
2
            "VK_AMD_shader_core_properties" => 
Ok(Extension::AMDShaderCoreProperties)0
,
580
2
            "VK_AMD_memory_overallocation_behavior" => {
581
0
                Ok(Extension::AMDMemoryOverallocationBehavior)
582
            }
583
2
            "VK_EXT_vertex_attribute_divisor" => 
Ok(Extension::EXTVertexAttributeDivisor)0
,
584
2
            "VK_GGP_frame_token" => 
Ok(Extension::GGPFrameToken)0
,
585
2
            "VK_EXT_pipeline_creation_feedback" => 
Ok(Extension::EXTPipelineCreationFeedback)0
,
586
2
            "VK_NV_shader_subgroup_partitioned" => 
Ok(Extension::NVShaderSubgroupPartitioned)0
,
587
2
            "VK_NV_compute_shader_derivatives" => 
Ok(Extension::NVComputeShaderDerivatives)0
,
588
2
            "VK_NV_mesh_shader" => 
Ok(Extension::NVMeshShader)0
,
589
2
            "VK_NV_fragment_shader_barycentric" => 
Ok(Extension::NVFragmentShaderBarycentric)0
,
590
2
            "VK_NV_shader_image_footprint" => 
Ok(Extension::NVShaderImageFootprint)0
,
591
2
            "VK_NV_scissor_exclusive" => 
Ok(Extension::NVScissorExclusive)0
,
592
2
            "VK_NV_device_diagnostic_checkpoints" => 
Ok(Extension::NVDeviceDiagnosticCheckpoints)0
,
593
2
            "VK_INTEL_shader_integer_functions2" => 
Ok(Extension::INTELShaderIntegerFunctions2)0
,
594
2
            "VK_INTEL_performance_query" => 
Ok(Extension::INTELPerformanceQuery)0
,
595
2
            "VK_EXT_pci_bus_info" => 
Ok(Extension::EXTPciBusInfo)0
,
596
2
            "VK_AMD_display_native_hdr" => 
Ok(Extension::AMDDisplayNativeHdr)0
,
597
2
            "VK_FUCHSIA_imagepipe_surface" => 
Ok(Extension::FUCHSIAImagepipeSurface)0
,
598
2
            "VK_EXT_metal_surface" => 
Ok(Extension::EXTMetalSurface)0
,
599
2
            "VK_EXT_fragment_density_map" => 
Ok(Extension::EXTFragmentDensityMap)0
,
600
2
            "VK_EXT_scalar_block_layout" => 
Ok(Extension::EXTScalarBlockLayout)0
,
601
2
            "VK_GOOGLE_hlsl_functionality1" => 
Ok(Extension::GOOGLEHlslFunctionality1)0
,
602
2
            "VK_GOOGLE_decorate_string" => 
Ok(Extension::GOOGLEDecorateString)0
,
603
2
            "VK_EXT_subgroup_size_control" => 
Ok(Extension::EXTSubgroupSizeControl)0
,
604
2
            "VK_AMD_shader_core_properties2" => 
Ok(Extension::AMDShaderCoreProperties2)0
,
605
2
            "VK_AMD_device_coherent_memory" => 
Ok(Extension::AMDDeviceCoherentMemory)0
,
606
2
            "VK_EXT_shader_image_atomic_int64" => 
Ok(Extension::EXTShaderImageAtomicInt64)0
,
607
2
            "VK_EXT_memory_budget" => 
Ok(Extension::EXTMemoryBudget)0
,
608
2
            "VK_EXT_memory_priority" => 
Ok(Extension::EXTMemoryPriority)0
,
609
2
            "VK_NV_dedicated_allocation_image_aliasing" => {
610
0
                Ok(Extension::NVDedicatedAllocationImageAliasing)
611
            }
612
2
            "VK_EXT_buffer_device_address" => 
Ok(Extension::EXTBufferDeviceAddress)0
,
613
2
            "VK_EXT_tooling_info" => 
Ok(Extension::EXTToolingInfo)0
,
614
2
            "VK_EXT_separate_stencil_usage" => 
Ok(Extension::EXTSeparateStencilUsage)0
,
615
2
            "VK_EXT_validation_features" => 
Ok(Extension::EXTValidationFeatures)0
,
616
2
            "VK_NV_cooperative_matrix" => 
Ok(Extension::NVCooperativeMatrix)0
,
617
2
            "VK_NV_coverage_reduction_mode" => 
Ok(Extension::NVCoverageReductionMode)0
,
618
2
            "VK_EXT_fragment_shader_interlock" => 
Ok(Extension::EXTFragmentShaderInterlock)0
,
619
2
            "VK_EXT_ycbcr_image_arrays" => 
Ok(Extension::EXTYcbcrImageArrays)0
,
620
2
            "VK_EXT_provoking_vertex" => 
Ok(Extension::EXTProvokingVertex)0
,
621
2
            "VK_EXT_full_screen_exclusive" => 
Ok(Extension::EXTFullScreenExclusive)0
,
622
2
            "VK_EXT_headless_surface" => 
Ok(Extension::EXTHeadlessSurface)0
,
623
2
            "VK_EXT_line_rasterization" => 
Ok(Extension::EXTLineRasterization)0
,
624
2
            "VK_EXT_shader_atomic_float" => 
Ok(Extension::EXTShaderAtomicFloat)0
,
625
2
            "VK_EXT_host_query_reset" => 
Ok(Extension::EXTHostQueryReset)0
,
626
2
            "VK_EXT_index_type_uint8" => 
Ok(Extension::EXTIndexTypeUint8)0
,
627
2
            "VK_EXT_extended_dynamic_state" => 
Ok(Extension::EXTExtendedDynamicState)0
,
628
2
            "VK_EXT_shader_atomic_float2" => 
Ok(Extension::EXTShaderAtomicFloat2)0
,
629
2
            "VK_EXT_surface_maintenance1" => 
Ok(Extension::EXTSurfaceMaintenance1)0
,
630
2
            "VK_EXT_swapchain_maintenance1" => 
Ok(Extension::EXTSwapchainMaintenance1)0
,
631
2
            "VK_EXT_shader_demote_to_helper_invocation" => {
632
0
                Ok(Extension::EXTShaderDemoteToHelperInvocation)
633
            }
634
2
            "VK_NV_device_generated_commands" => 
Ok(Extension::NVDeviceGeneratedCommands)0
,
635
2
            "VK_NV_inherited_viewport_scissor" => 
Ok(Extension::NVInheritedViewportScissor)0
,
636
2
            "VK_EXT_texel_buffer_alignment" => 
Ok(Extension::EXTTexelBufferAlignment)0
,
637
2
            "VK_QCOM_render_pass_transform" => 
Ok(Extension::QCOMRenderPassTransform)0
,
638
2
            "VK_EXT_device_memory_report" => 
Ok(Extension::EXTDeviceMemoryReport)0
,
639
2
            "VK_EXT_acquire_drm_display" => 
Ok(Extension::EXTAcquireDrmDisplay)0
,
640
2
            "VK_EXT_robustness2" => 
Ok(Extension::EXTRobustness2)0
,
641
2
            "VK_EXT_custom_border_color" => 
Ok(Extension::EXTCustomBorderColor)0
,
642
2
            "VK_GOOGLE_user_type" => 
Ok(Extension::GOOGLEUserType)0
,
643
2
            "VK_NV_present_barrier" => 
Ok(Extension::NVPresentBarrier)0
,
644
2
            "VK_EXT_private_data" => 
Ok(Extension::EXTPrivateData)0
,
645
2
            "VK_EXT_pipeline_creation_cache_control" => {
646
0
                Ok(Extension::EXTPipelineCreationCacheControl)
647
            }
648
2
            "VK_NV_device_diagnostics_config" => 
Ok(Extension::NVDeviceDiagnosticsConfig)0
,
649
2
            "VK_QCOM_render_pass_store_ops" => 
Ok(Extension::QCOMRenderPassStoreOps)0
,
650
2
            "VK_NV_low_latency" => 
Ok(Extension::NVLowLatency)0
,
651
2
            "VK_EXT_metal_objects" => 
Ok(Extension::EXTMetalObjects)0
,
652
2
            "VK_EXT_descriptor_buffer" => 
Ok(Extension::EXTDescriptorBuffer)0
,
653
2
            "VK_EXT_graphics_pipeline_library" => 
Ok(Extension::EXTGraphicsPipelineLibrary)0
,
654
2
            "VK_AMD_shader_early_and_late_fragment_tests" => {
655
0
                Ok(Extension::AMDShaderEarlyAndLateFragmentTests)
656
            }
657
2
            "VK_NV_fragment_shading_rate_enums" => 
Ok(Extension::NVFragmentShadingRateEnums)0
,
658
2
            "VK_NV_ray_tracing_motion_blur" => 
Ok(Extension::NVRayTracingMotionBlur)0
,
659
2
            "VK_EXT_ycbcr_2plane_444_formats" => 
Ok(Extension::EXTYcbcr2plane444Formats)0
,
660
2
            "VK_EXT_fragment_density_map2" => 
Ok(Extension::EXTFragmentDensityMap2)0
,
661
2
            "VK_QCOM_rotated_copy_commands" => 
Ok(Extension::QCOMRotatedCopyCommands)0
,
662
2
            "VK_EXT_image_robustness" => 
Ok(Extension::EXTImageRobustness)0
,
663
2
            "VK_EXT_image_compression_control" => 
Ok(Extension::EXTImageCompressionControl)0
,
664
2
            "VK_EXT_attachment_feedback_loop_layout" => {
665
0
                Ok(Extension::EXTAttachmentFeedbackLoopLayout)
666
            }
667
2
            "VK_EXT_4444_formats" => 
Ok(Extension::EXT4444Formats)0
,
668
2
            "VK_EXT_device_fault" => 
Ok(Extension::EXTDeviceFault)0
,
669
2
            "VK_ARM_rasterization_order_attachment_access" => {
670
0
                Ok(Extension::ARMRasterizationOrderAttachmentAccess)
671
            }
672
2
            "VK_EXT_rgba10x6_formats" => 
Ok(Extension::EXTRgba10x6Formats)0
,
673
2
            "VK_NV_acquire_winrt_display" => 
Ok(Extension::NVAcquireWinrtDisplay)0
,
674
2
            "VK_EXT_directfb_surface" => 
Ok(Extension::EXTDirectfbSurface)0
,
675
2
            "VK_VALVE_mutable_descriptor_type" => 
Ok(Extension::VALVEMutableDescriptorType)0
,
676
2
            "VK_EXT_vertex_input_dynamic_state" => 
Ok(Extension::EXTVertexInputDynamicState)0
,
677
2
            "VK_EXT_physical_device_drm" => 
Ok(Extension::EXTPhysicalDeviceDrm)0
,
678
2
            "VK_EXT_device_address_binding_report" => 
Ok(Extension::EXTDeviceAddressBindingReport)0
,
679
2
            "VK_EXT_depth_clip_control" => 
Ok(Extension::EXTDepthClipControl)0
,
680
2
            "VK_EXT_primitive_topology_list_restart" => {
681
0
                Ok(Extension::EXTPrimitiveTopologyListRestart)
682
            }
683
2
            "VK_FUCHSIA_external_memory" => 
Ok(Extension::FUCHSIAExternalMemory)0
,
684
2
            "VK_FUCHSIA_external_semaphore" => 
Ok(Extension::FUCHSIAExternalSemaphore)0
,
685
2
            "VK_FUCHSIA_buffer_collection" => 
Ok(Extension::FUCHSIABufferCollection)0
,
686
2
            "VK_HUAWEI_subpass_shading" => 
Ok(Extension::HUAWEISubpassShading)0
,
687
2
            "VK_HUAWEI_invocation_mask" => 
Ok(Extension::HUAWEIInvocationMask)0
,
688
2
            "VK_NV_external_memory_rdma" => 
Ok(Extension::NVExternalMemoryRdma)0
,
689
2
            "VK_EXT_pipeline_properties" => 
Ok(Extension::EXTPipelineProperties)0
,
690
2
            "VK_EXT_multisampled_render_to_single_sampled" => {
691
0
                Ok(Extension::EXTMultisampledRenderToSingleSampled)
692
            }
693
2
            "VK_EXT_extended_dynamic_state2" => 
Ok(Extension::EXTExtendedDynamicState2)0
,
694
2
            "VK_QNX_screen_surface" => 
Ok(Extension::QNXScreenSurface)0
,
695
2
            "VK_EXT_color_write_enable" => 
Ok(Extension::EXTColorWriteEnable)0
,
696
2
            "VK_EXT_primitives_generated_query" => 
Ok(Extension::EXTPrimitivesGeneratedQuery)0
,
697
2
            "VK_EXT_global_priority_query" => 
Ok(Extension::EXTGlobalPriorityQuery)0
,
698
2
            "VK_EXT_image_view_min_lod" => 
Ok(Extension::EXTImageViewMinLod)0
,
699
2
            "VK_EXT_multi_draw" => 
Ok(Extension::EXTMultiDraw)0
,
700
2
            "VK_EXT_image_2d_view_of_3d" => 
Ok(Extension::EXTImage2dViewOf3d)0
,
701
2
            "VK_EXT_shader_tile_image" => 
Ok(Extension::EXTShaderTileImage)0
,
702
2
            "VK_EXT_opacity_micromap" => 
Ok(Extension::EXTOpacityMicromap)0
,
703
2
            "VK_NV_displacement_micromap" => 
Ok(Extension::NVDisplacementMicromap)0
,
704
2
            "VK_EXT_load_store_op_none" => 
Ok(Extension::EXTLoadStoreOpNone)0
,
705
2
            "VK_HUAWEI_cluster_culling_shader" => 
Ok(Extension::HUAWEIClusterCullingShader)0
,
706
2
            "VK_EXT_border_color_swizzle" => 
Ok(Extension::EXTBorderColorSwizzle)0
,
707
2
            "VK_EXT_pageable_device_local_memory" => 
Ok(Extension::EXTPageableDeviceLocalMemory)0
,
708
2
            "VK_ARM_shader_core_properties" => 
Ok(Extension::ARMShaderCoreProperties)0
,
709
2
            "VK_EXT_image_sliced_view_of_3d" => 
Ok(Extension::EXTImageSlicedViewOf3d)0
,
710
2
            "VK_VALVE_descriptor_set_host_mapping" => 
Ok(Extension::VALVEDescriptorSetHostMapping)0
,
711
2
            "VK_EXT_depth_clamp_zero_one" => 
Ok(Extension::EXTDepthClampZeroOne)0
,
712
2
            "VK_EXT_non_seamless_cube_map" => 
Ok(Extension::EXTNonSeamlessCubeMap)0
,
713
2
            "VK_QCOM_fragment_density_map_offset" => 
Ok(Extension::QCOMFragmentDensityMapOffset)0
,
714
2
            "VK_NV_copy_memory_indirect" => 
Ok(Extension::NVCopyMemoryIndirect)0
,
715
2
            "VK_NV_memory_decompression" => 
Ok(Extension::NVMemoryDecompression)0
,
716
2
            "VK_NV_linear_color_attachment" => 
Ok(Extension::NVLinearColorAttachment)0
,
717
2
            "VK_GOOGLE_surfaceless_query" => 
Ok(Extension::GOOGLESurfacelessQuery)0
,
718
2
            "VK_EXT_image_compression_control_swapchain" => {
719
0
                Ok(Extension::EXTImageCompressionControlSwapchain)
720
            }
721
2
            "VK_QCOM_image_processing" => 
Ok(Extension::QCOMImageProcessing)0
,
722
2
            "VK_EXT_extended_dynamic_state3" => 
Ok(Extension::EXTExtendedDynamicState3)0
,
723
2
            "VK_EXT_subpass_merge_feedback" => 
Ok(Extension::EXTSubpassMergeFeedback)0
,
724
2
            "VK_LUNARG_direct_driver_loading" => 
Ok(Extension::LUNARGDirectDriverLoading)0
,
725
2
            "VK_EXT_shader_module_identifier" => 
Ok(Extension::EXTShaderModuleIdentifier)0
,
726
2
            "VK_EXT_rasterization_order_attachment_access" => {
727
0
                Ok(Extension::EXTRasterizationOrderAttachmentAccess)
728
            }
729
2
            "VK_NV_optical_flow" => 
Ok(Extension::NVOpticalFlow)0
,
730
2
            "VK_EXT_legacy_dithering" => 
Ok(Extension::EXTLegacyDithering)0
,
731
2
            "VK_EXT_pipeline_protected_access" => 
Ok(Extension::EXTPipelineProtectedAccess)0
,
732
2
            "VK_EXT_shader_object" => 
Ok(Extension::EXTShaderObject)0
,
733
2
            "VK_QCOM_tile_properties" => 
Ok(Extension::QCOMTileProperties)0
,
734
2
            "VK_SEC_amigo_profiling" => 
Ok(Extension::SECAmigoProfiling)0
,
735
2
            "VK_QCOM_multiview_per_view_viewports" => 
Ok(Extension::QCOMMultiviewPerViewViewports)0
,
736
2
            "VK_NV_ray_tracing_invocation_reorder" => 
Ok(Extension::NVRayTracingInvocationReorder)0
,
737
2
            "VK_EXT_mutable_descriptor_type" => 
Ok(Extension::EXTMutableDescriptorType)0
,
738
2
            "VK_ARM_shader_core_builtins" => 
Ok(Extension::ARMShaderCoreBuiltins)0
,
739
2
            "VK_EXT_pipeline_library_group_handles" => {
740
0
                Ok(Extension::EXTPipelineLibraryGroupHandles)
741
            }
742
2
            "VK_QCOM_multiview_per_view_render_areas" => {
743
0
                Ok(Extension::QCOMMultiviewPerViewRenderAreas)
744
            }
745
2
            "VK_EXT_attachment_feedback_loop_dynamic_state" => {
746
0
                Ok(Extension::EXTAttachmentFeedbackLoopDynamicState)
747
            }
748
2
            "VK_KHR_acceleration_structure" => 
Ok(Extension::KHRAccelerationStructure)0
,
749
2
            "VK_KHR_ray_tracing_pipeline" => 
Ok(Extension::KHRRayTracingPipeline)0
,
750
2
            "VK_KHR_ray_query" => 
Ok(Extension::KHRRayQuery)0
,
751
2
            "VK_EXT_mesh_shader" => 
Ok(Extension::EXTMeshShader)0
,
752
2
            _ => Err(TryFromExtensionError::UnknownExtension(value.to_owned())),
753
        }
754
43
    }
755
}
756
757
impl From<Extension> for &'static str {
758
11
    fn from(value: Extension) -> &'static str {
759
11
        match value {
760
0
            Extension::KHRSurface => "VK_KHR_surface",
761
4
            Extension::KHRSwapchain => "VK_KHR_swapchain",
762
0
            Extension::KHRDisplay => "VK_KHR_display",
763
0
            Extension::KHRDisplaySwapchain => "VK_KHR_display_swapchain",
764
0
            Extension::KHRXlibSurface => "VK_KHR_xlib_surface",
765
0
            Extension::KHRXcbSurface => "VK_KHR_xcb_surface",
766
0
            Extension::KHRWaylandSurface => "VK_KHR_wayland_surface",
767
0
            Extension::KHRAndroidSurface => "VK_KHR_android_surface",
768
0
            Extension::KHRWin32Surface => "VK_KHR_win32_surface",
769
0
            Extension::KHRSamplerMirrorClampToEdge => "VK_KHR_sampler_mirror_clamp_to_edge",
770
0
            Extension::KHRVideoQueue => "VK_KHR_video_queue",
771
0
            Extension::KHRVideoDecodeQueue => "VK_KHR_video_decode_queue",
772
0
            Extension::KHRVideoDecodeH264 => "VK_KHR_video_decode_h264",
773
0
            Extension::KHRDynamicRendering => "VK_KHR_dynamic_rendering",
774
0
            Extension::KHRMultiview => "VK_KHR_multiview",
775
0
            Extension::KHRGetPhysicalDeviceProperties2 => "VK_KHR_get_physical_device_properties2",
776
0
            Extension::KHRDeviceGroup => "VK_KHR_device_group",
777
0
            Extension::KHRShaderDrawParameters => "VK_KHR_shader_draw_parameters",
778
0
            Extension::KHRMaintenance1 => "VK_KHR_maintenance1",
779
0
            Extension::KHRDeviceGroupCreation => "VK_KHR_device_group_creation",
780
0
            Extension::KHRExternalMemoryCapabilities => "VK_KHR_external_memory_capabilities",
781
6
            Extension::KHRExternalMemory => "VK_KHR_external_memory",
782
0
            Extension::KHRExternalMemoryWin32 => "VK_KHR_external_memory_win32",
783
0
            Extension::KHRExternalMemoryFd => "VK_KHR_external_memory_fd",
784
0
            Extension::KHRWin32KeyedMutex => "VK_KHR_win32_keyed_mutex",
785
0
            Extension::KHRExternalSemaphoreCapabilities => "VK_KHR_external_semaphore_capabilities",
786
0
            Extension::KHRExternalSemaphore => "VK_KHR_external_semaphore",
787
0
            Extension::KHRExternalSemaphoreWin32 => "VK_KHR_external_semaphore_win32",
788
0
            Extension::KHRExternalSemaphoreFd => "VK_KHR_external_semaphore_fd",
789
0
            Extension::KHRPushDescriptor => "VK_KHR_push_descriptor",
790
0
            Extension::KHRShaderFloat16Int8 => "VK_KHR_shader_float16_int8",
791
0
            Extension::KHR16bitStorage => "VK_KHR_16bit_storage",
792
0
            Extension::KHRIncrementalPresent => "VK_KHR_incremental_present",
793
0
            Extension::KHRDescriptorUpdateTemplate => "VK_KHR_descriptor_update_template",
794
0
            Extension::KHRImagelessFramebuffer => "VK_KHR_imageless_framebuffer",
795
0
            Extension::KHRCreateRenderpass2 => "VK_KHR_create_renderpass2",
796
0
            Extension::KHRSharedPresentableImage => "VK_KHR_shared_presentable_image",
797
0
            Extension::KHRExternalFenceCapabilities => "VK_KHR_external_fence_capabilities",
798
0
            Extension::KHRExternalFence => "VK_KHR_external_fence",
799
0
            Extension::KHRExternalFenceWin32 => "VK_KHR_external_fence_win32",
800
0
            Extension::KHRExternalFenceFd => "VK_KHR_external_fence_fd",
801
0
            Extension::KHRPerformanceQuery => "VK_KHR_performance_query",
802
0
            Extension::KHRMaintenance2 => "VK_KHR_maintenance2",
803
0
            Extension::KHRGetSurfaceCapabilities2 => "VK_KHR_get_surface_capabilities2",
804
0
            Extension::KHRVariablePointers => "VK_KHR_variable_pointers",
805
0
            Extension::KHRGetDisplayProperties2 => "VK_KHR_get_display_properties2",
806
0
            Extension::KHRDedicatedAllocation => "VK_KHR_dedicated_allocation",
807
0
            Extension::KHRStorageBufferStorageClass => "VK_KHR_storage_buffer_storage_class",
808
0
            Extension::KHRRelaxedBlockLayout => "VK_KHR_relaxed_block_layout",
809
0
            Extension::KHRGetMemoryRequirements2 => "VK_KHR_get_memory_requirements2",
810
0
            Extension::KHRImageFormatList => "VK_KHR_image_format_list",
811
1
            Extension::KHRSamplerYcbcrConversion => "VK_KHR_sampler_ycbcr_conversion",
812
0
            Extension::KHRBindMemory2 => "VK_KHR_bind_memory2",
813
0
            Extension::KHRPortabilitySubset => "VK_KHR_portability_subset",
814
0
            Extension::KHRMaintenance3 => "VK_KHR_maintenance3",
815
0
            Extension::KHRDrawIndirectCount => "VK_KHR_draw_indirect_count",
816
0
            Extension::KHRShaderSubgroupExtendedTypes => "VK_KHR_shader_subgroup_extended_types",
817
0
            Extension::KHR8bitStorage => "VK_KHR_8bit_storage",
818
0
            Extension::KHRShaderAtomicInt64 => "VK_KHR_shader_atomic_int64",
819
0
            Extension::KHRShaderClock => "VK_KHR_shader_clock",
820
0
            Extension::KHRVideoDecodeH265 => "VK_KHR_video_decode_h265",
821
0
            Extension::KHRGlobalPriority => "VK_KHR_global_priority",
822
0
            Extension::KHRDriverProperties => "VK_KHR_driver_properties",
823
0
            Extension::KHRShaderFloatControls => "VK_KHR_shader_float_controls",
824
0
            Extension::KHRDepthStencilResolve => "VK_KHR_depth_stencil_resolve",
825
0
            Extension::KHRSwapchainMutableFormat => "VK_KHR_swapchain_mutable_format",
826
0
            Extension::KHRTimelineSemaphore => "VK_KHR_timeline_semaphore",
827
0
            Extension::KHRVulkanMemoryModel => "VK_KHR_vulkan_memory_model",
828
0
            Extension::KHRShaderTerminateInvocation => "VK_KHR_shader_terminate_invocation",
829
0
            Extension::KHRFragmentShadingRate => "VK_KHR_fragment_shading_rate",
830
0
            Extension::KHRSpirv14 => "VK_KHR_spirv_1_4",
831
0
            Extension::KHRSurfaceProtectedCapabilities => "VK_KHR_surface_protected_capabilities",
832
0
            Extension::KHRSeparateDepthStencilLayouts => "VK_KHR_separate_depth_stencil_layouts",
833
0
            Extension::KHRPresentWait => "VK_KHR_present_wait",
834
0
            Extension::KHRUniformBufferStandardLayout => "VK_KHR_uniform_buffer_standard_layout",
835
0
            Extension::KHRBufferDeviceAddress => "VK_KHR_buffer_device_address",
836
0
            Extension::KHRDeferredHostOperations => "VK_KHR_deferred_host_operations",
837
0
            Extension::KHRPipelineExecutableProperties => "VK_KHR_pipeline_executable_properties",
838
0
            Extension::KHRMapMemory2 => "VK_KHR_map_memory2",
839
0
            Extension::KHRShaderIntegerDotProduct => "VK_KHR_shader_integer_dot_product",
840
0
            Extension::KHRPipelineLibrary => "VK_KHR_pipeline_library",
841
0
            Extension::KHRShaderNonSemanticInfo => "VK_KHR_shader_non_semantic_info",
842
0
            Extension::KHRPresentId => "VK_KHR_present_id",
843
0
            Extension::KHRVideoEncodeQueue => "VK_KHR_video_encode_queue",
844
0
            Extension::KHRSynchronization2 => "VK_KHR_synchronization2",
845
0
            Extension::KHRFragmentShaderBarycentric => "VK_KHR_fragment_shader_barycentric",
846
            Extension::KHRShaderSubgroupUniformControlFlow => {
847
0
                "VK_KHR_shader_subgroup_uniform_control_flow"
848
            }
849
            Extension::KHRZeroInitializeWorkgroupMemory => {
850
0
                "VK_KHR_zero_initialize_workgroup_memory"
851
            }
852
            Extension::KHRWorkgroupMemoryExplicitLayout => {
853
0
                "VK_KHR_workgroup_memory_explicit_layout"
854
            }
855
0
            Extension::KHRCopyCommands2 => "VK_KHR_copy_commands2",
856
0
            Extension::KHRFormatFeatureFlags2 => "VK_KHR_format_feature_flags2",
857
0
            Extension::KHRRayTracingMaintenance1 => "VK_KHR_ray_tracing_maintenance1",
858
0
            Extension::KHRPortabilityEnumeration => "VK_KHR_portability_enumeration",
859
0
            Extension::KHRMaintenance4 => "VK_KHR_maintenance4",
860
0
            Extension::KHRRayTracingPositionFetch => "VK_KHR_ray_tracing_position_fetch",
861
0
            Extension::ANDROIDNativeBuffer => "VK_ANDROID_native_buffer",
862
0
            Extension::EXTDebugReport => "VK_EXT_debug_report",
863
0
            Extension::NVGlslShader => "VK_NV_glsl_shader",
864
0
            Extension::EXTDepthRangeUnrestricted => "VK_EXT_depth_range_unrestricted",
865
0
            Extension::IMGFilterCubic => "VK_IMG_filter_cubic",
866
0
            Extension::AMDRasterizationOrder => "VK_AMD_rasterization_order",
867
0
            Extension::AMDShaderTrinaryMinmax => "VK_AMD_shader_trinary_minmax",
868
            Extension::AMDShaderExplicitVertexParameter => {
869
0
                "VK_AMD_shader_explicit_vertex_parameter"
870
            }
871
0
            Extension::EXTDebugMarker => "VK_EXT_debug_marker",
872
0
            Extension::AMDGcnShader => "VK_AMD_gcn_shader",
873
0
            Extension::NVDedicatedAllocation => "VK_NV_dedicated_allocation",
874
0
            Extension::EXTTransformFeedback => "VK_EXT_transform_feedback",
875
0
            Extension::NVXBinaryImport => "VK_NVX_binary_import",
876
0
            Extension::NVXImageViewHandle => "VK_NVX_image_view_handle",
877
0
            Extension::AMDDrawIndirectCount => "VK_AMD_draw_indirect_count",
878
0
            Extension::AMDNegativeViewportHeight => "VK_AMD_negative_viewport_height",
879
0
            Extension::AMDGpuShaderHalfFloat => "VK_AMD_gpu_shader_half_float",
880
0
            Extension::AMDShaderBallot => "VK_AMD_shader_ballot",
881
0
            Extension::EXTVideoEncodeH264 => "VK_EXT_video_encode_h264",
882
0
            Extension::EXTVideoEncodeH265 => "VK_EXT_video_encode_h265",
883
0
            Extension::AMDTextureGatherBiasLod => "VK_AMD_texture_gather_bias_lod",
884
0
            Extension::AMDShaderInfo => "VK_AMD_shader_info",
885
0
            Extension::AMDShaderImageLoadStoreLod => "VK_AMD_shader_image_load_store_lod",
886
0
            Extension::GGPStreamDescriptorSurface => "VK_GGP_stream_descriptor_surface",
887
0
            Extension::NVCornerSampledImage => "VK_NV_corner_sampled_image",
888
0
            Extension::IMGFormatPvrtc => "VK_IMG_format_pvrtc",
889
0
            Extension::NVExternalMemoryCapabilities => "VK_NV_external_memory_capabilities",
890
0
            Extension::NVExternalMemory => "VK_NV_external_memory",
891
0
            Extension::NVExternalMemoryWin32 => "VK_NV_external_memory_win32",
892
0
            Extension::NVWin32KeyedMutex => "VK_NV_win32_keyed_mutex",
893
0
            Extension::EXTValidationFlags => "VK_EXT_validation_flags",
894
0
            Extension::NNViSurface => "VK_NN_vi_surface",
895
0
            Extension::EXTShaderSubgroupBallot => "VK_EXT_shader_subgroup_ballot",
896
0
            Extension::EXTShaderSubgroupVote => "VK_EXT_shader_subgroup_vote",
897
0
            Extension::EXTTextureCompressionAstcHdr => "VK_EXT_texture_compression_astc_hdr",
898
0
            Extension::EXTAstcDecodeMode => "VK_EXT_astc_decode_mode",
899
0
            Extension::EXTPipelineRobustness => "VK_EXT_pipeline_robustness",
900
0
            Extension::EXTConditionalRendering => "VK_EXT_conditional_rendering",
901
0
            Extension::NVClipSpaceWScaling => "VK_NV_clip_space_w_scaling",
902
0
            Extension::EXTDirectModeDisplay => "VK_EXT_direct_mode_display",
903
0
            Extension::EXTAcquireXlibDisplay => "VK_EXT_acquire_xlib_display",
904
0
            Extension::EXTDisplaySurfaceCounter => "VK_EXT_display_surface_counter",
905
0
            Extension::EXTDisplayControl => "VK_EXT_display_control",
906
0
            Extension::GOOGLEDisplayTiming => "VK_GOOGLE_display_timing",
907
0
            Extension::NVSampleMaskOverrideCoverage => "VK_NV_sample_mask_override_coverage",
908
0
            Extension::NVGeometryShaderPassthrough => "VK_NV_geometry_shader_passthrough",
909
0
            Extension::NVViewportArray2 => "VK_NV_viewport_array2",
910
0
            Extension::NVXMultiviewPerViewAttributes => "VK_NVX_multiview_per_view_attributes",
911
0
            Extension::NVViewportSwizzle => "VK_NV_viewport_swizzle",
912
0
            Extension::EXTDiscardRectangles => "VK_EXT_discard_rectangles",
913
0
            Extension::EXTConservativeRasterization => "VK_EXT_conservative_rasterization",
914
0
            Extension::EXTDepthClipEnable => "VK_EXT_depth_clip_enable",
915
0
            Extension::EXTSwapchainColorspace => "VK_EXT_swapchain_colorspace",
916
0
            Extension::EXTHdrMetadata => "VK_EXT_hdr_metadata",
917
0
            Extension::MVKIosSurface => "VK_MVK_ios_surface",
918
0
            Extension::MVKMacosSurface => "VK_MVK_macos_surface",
919
0
            Extension::EXTExternalMemoryDmaBuf => "VK_EXT_external_memory_dma_buf",
920
0
            Extension::EXTQueueFamilyForeign => "VK_EXT_queue_family_foreign",
921
0
            Extension::EXTDebugUtils => "VK_EXT_debug_utils",
922
            Extension::ANDROIDExternalMemoryAndroidHardwareBuffer => {
923
0
                "VK_ANDROID_external_memory_android_hardware_buffer"
924
            }
925
0
            Extension::EXTSamplerFilterMinmax => "VK_EXT_sampler_filter_minmax",
926
0
            Extension::AMDGpuShaderInt16 => "VK_AMD_gpu_shader_int16",
927
0
            Extension::AMDMixedAttachmentSamples => "VK_AMD_mixed_attachment_samples",
928
0
            Extension::AMDShaderFragmentMask => "VK_AMD_shader_fragment_mask",
929
0
            Extension::EXTInlineUniformBlock => "VK_EXT_inline_uniform_block",
930
0
            Extension::EXTShaderStencilExport => "VK_EXT_shader_stencil_export",
931
0
            Extension::EXTSampleLocations => "VK_EXT_sample_locations",
932
0
            Extension::EXTBlendOperationAdvanced => "VK_EXT_blend_operation_advanced",
933
0
            Extension::NVFragmentCoverageToColor => "VK_NV_fragment_coverage_to_color",
934
0
            Extension::NVFramebufferMixedSamples => "VK_NV_framebuffer_mixed_samples",
935
0
            Extension::NVFillRectangle => "VK_NV_fill_rectangle",
936
0
            Extension::NVShaderSmBuiltins => "VK_NV_shader_sm_builtins",
937
0
            Extension::EXTPostDepthCoverage => "VK_EXT_post_depth_coverage",
938
0
            Extension::EXTImageDrmFormatModifier => "VK_EXT_image_drm_format_modifier",
939
0
            Extension::EXTValidationCache => "VK_EXT_validation_cache",
940
0
            Extension::EXTDescriptorIndexing => "VK_EXT_descriptor_indexing",
941
0
            Extension::EXTShaderViewportIndexLayer => "VK_EXT_shader_viewport_index_layer",
942
0
            Extension::NVShadingRateImage => "VK_NV_shading_rate_image",
943
0
            Extension::NVRayTracing => "VK_NV_ray_tracing",
944
0
            Extension::NVRepresentativeFragmentTest => "VK_NV_representative_fragment_test",
945
0
            Extension::EXTFilterCubic => "VK_EXT_filter_cubic",
946
0
            Extension::QCOMRenderPassShaderResolve => "VK_QCOM_render_pass_shader_resolve",
947
0
            Extension::EXTGlobalPriority => "VK_EXT_global_priority",
948
0
            Extension::EXTExternalMemoryHost => "VK_EXT_external_memory_host",
949
0
            Extension::AMDBufferMarker => "VK_AMD_buffer_marker",
950
0
            Extension::AMDPipelineCompilerControl => "VK_AMD_pipeline_compiler_control",
951
0
            Extension::EXTCalibratedTimestamps => "VK_EXT_calibrated_timestamps",
952
0
            Extension::AMDShaderCoreProperties => "VK_AMD_shader_core_properties",
953
0
            Extension::AMDMemoryOverallocationBehavior => "VK_AMD_memory_overallocation_behavior",
954
0
            Extension::EXTVertexAttributeDivisor => "VK_EXT_vertex_attribute_divisor",
955
0
            Extension::GGPFrameToken => "VK_GGP_frame_token",
956
0
            Extension::EXTPipelineCreationFeedback => "VK_EXT_pipeline_creation_feedback",
957
0
            Extension::NVShaderSubgroupPartitioned => "VK_NV_shader_subgroup_partitioned",
958
0
            Extension::NVComputeShaderDerivatives => "VK_NV_compute_shader_derivatives",
959
0
            Extension::NVMeshShader => "VK_NV_mesh_shader",
960
0
            Extension::NVFragmentShaderBarycentric => "VK_NV_fragment_shader_barycentric",
961
0
            Extension::NVShaderImageFootprint => "VK_NV_shader_image_footprint",
962
0
            Extension::NVScissorExclusive => "VK_NV_scissor_exclusive",
963
0
            Extension::NVDeviceDiagnosticCheckpoints => "VK_NV_device_diagnostic_checkpoints",
964
0
            Extension::INTELShaderIntegerFunctions2 => "VK_INTEL_shader_integer_functions2",
965
0
            Extension::INTELPerformanceQuery => "VK_INTEL_performance_query",
966
0
            Extension::EXTPciBusInfo => "VK_EXT_pci_bus_info",
967
0
            Extension::AMDDisplayNativeHdr => "VK_AMD_display_native_hdr",
968
0
            Extension::FUCHSIAImagepipeSurface => "VK_FUCHSIA_imagepipe_surface",
969
0
            Extension::EXTMetalSurface => "VK_EXT_metal_surface",
970
0
            Extension::EXTFragmentDensityMap => "VK_EXT_fragment_density_map",
971
0
            Extension::EXTScalarBlockLayout => "VK_EXT_scalar_block_layout",
972
0
            Extension::GOOGLEHlslFunctionality1 => "VK_GOOGLE_hlsl_functionality1",
973
0
            Extension::GOOGLEDecorateString => "VK_GOOGLE_decorate_string",
974
0
            Extension::EXTSubgroupSizeControl => "VK_EXT_subgroup_size_control",
975
0
            Extension::AMDShaderCoreProperties2 => "VK_AMD_shader_core_properties2",
976
0
            Extension::AMDDeviceCoherentMemory => "VK_AMD_device_coherent_memory",
977
0
            Extension::EXTShaderImageAtomicInt64 => "VK_EXT_shader_image_atomic_int64",
978
0
            Extension::EXTMemoryBudget => "VK_EXT_memory_budget",
979
0
            Extension::EXTMemoryPriority => "VK_EXT_memory_priority",
980
            Extension::NVDedicatedAllocationImageAliasing => {
981
0
                "VK_NV_dedicated_allocation_image_aliasing"
982
            }
983
0
            Extension::EXTBufferDeviceAddress => "VK_EXT_buffer_device_address",
984
0
            Extension::EXTToolingInfo => "VK_EXT_tooling_info",
985
0
            Extension::EXTSeparateStencilUsage => "VK_EXT_separate_stencil_usage",
986
0
            Extension::EXTValidationFeatures => "VK_EXT_validation_features",
987
0
            Extension::NVCooperativeMatrix => "VK_NV_cooperative_matrix",
988
0
            Extension::NVCoverageReductionMode => "VK_NV_coverage_reduction_mode",
989
0
            Extension::EXTFragmentShaderInterlock => "VK_EXT_fragment_shader_interlock",
990
0
            Extension::EXTYcbcrImageArrays => "VK_EXT_ycbcr_image_arrays",
991
0
            Extension::EXTProvokingVertex => "VK_EXT_provoking_vertex",
992
0
            Extension::EXTFullScreenExclusive => "VK_EXT_full_screen_exclusive",
993
0
            Extension::EXTHeadlessSurface => "VK_EXT_headless_surface",
994
0
            Extension::EXTLineRasterization => "VK_EXT_line_rasterization",
995
0
            Extension::EXTShaderAtomicFloat => "VK_EXT_shader_atomic_float",
996
0
            Extension::EXTHostQueryReset => "VK_EXT_host_query_reset",
997
0
            Extension::EXTIndexTypeUint8 => "VK_EXT_index_type_uint8",
998
0
            Extension::EXTExtendedDynamicState => "VK_EXT_extended_dynamic_state",
999
0
            Extension::EXTShaderAtomicFloat2 => "VK_EXT_shader_atomic_float2",
1000
0
            Extension::EXTSurfaceMaintenance1 => "VK_EXT_surface_maintenance1",
1001
0
            Extension::EXTSwapchainMaintenance1 => "VK_EXT_swapchain_maintenance1",
1002
            Extension::EXTShaderDemoteToHelperInvocation => {
1003
0
                "VK_EXT_shader_demote_to_helper_invocation"
1004
            }
1005
0
            Extension::NVDeviceGeneratedCommands => "VK_NV_device_generated_commands",
1006
0
            Extension::NVInheritedViewportScissor => "VK_NV_inherited_viewport_scissor",
1007
0
            Extension::EXTTexelBufferAlignment => "VK_EXT_texel_buffer_alignment",
1008
0
            Extension::QCOMRenderPassTransform => "VK_QCOM_render_pass_transform",
1009
0
            Extension::EXTDeviceMemoryReport => "VK_EXT_device_memory_report",
1010
0
            Extension::EXTAcquireDrmDisplay => "VK_EXT_acquire_drm_display",
1011
0
            Extension::EXTRobustness2 => "VK_EXT_robustness2",
1012
0
            Extension::EXTCustomBorderColor => "VK_EXT_custom_border_color",
1013
0
            Extension::GOOGLEUserType => "VK_GOOGLE_user_type",
1014
0
            Extension::NVPresentBarrier => "VK_NV_present_barrier",
1015
0
            Extension::EXTPrivateData => "VK_EXT_private_data",
1016
0
            Extension::EXTPipelineCreationCacheControl => "VK_EXT_pipeline_creation_cache_control",
1017
0
            Extension::NVDeviceDiagnosticsConfig => "VK_NV_device_diagnostics_config",
1018
0
            Extension::QCOMRenderPassStoreOps => "VK_QCOM_render_pass_store_ops",
1019
0
            Extension::NVLowLatency => "VK_NV_low_latency",
1020
0
            Extension::EXTMetalObjects => "VK_EXT_metal_objects",
1021
0
            Extension::EXTDescriptorBuffer => "VK_EXT_descriptor_buffer",
1022
0
            Extension::EXTGraphicsPipelineLibrary => "VK_EXT_graphics_pipeline_library",
1023
            Extension::AMDShaderEarlyAndLateFragmentTests => {
1024
0
                "VK_AMD_shader_early_and_late_fragment_tests"
1025
            }
1026
0
            Extension::NVFragmentShadingRateEnums => "VK_NV_fragment_shading_rate_enums",
1027
0
            Extension::NVRayTracingMotionBlur => "VK_NV_ray_tracing_motion_blur",
1028
0
            Extension::EXTYcbcr2plane444Formats => "VK_EXT_ycbcr_2plane_444_formats",
1029
0
            Extension::EXTFragmentDensityMap2 => "VK_EXT_fragment_density_map2",
1030
0
            Extension::QCOMRotatedCopyCommands => "VK_QCOM_rotated_copy_commands",
1031
0
            Extension::EXTImageRobustness => "VK_EXT_image_robustness",
1032
0
            Extension::EXTImageCompressionControl => "VK_EXT_image_compression_control",
1033
0
            Extension::EXTAttachmentFeedbackLoopLayout => "VK_EXT_attachment_feedback_loop_layout",
1034
0
            Extension::EXT4444Formats => "VK_EXT_4444_formats",
1035
0
            Extension::EXTDeviceFault => "VK_EXT_device_fault",
1036
            Extension::ARMRasterizationOrderAttachmentAccess => {
1037
0
                "VK_ARM_rasterization_order_attachment_access"
1038
            }
1039
0
            Extension::EXTRgba10x6Formats => "VK_EXT_rgba10x6_formats",
1040
0
            Extension::NVAcquireWinrtDisplay => "VK_NV_acquire_winrt_display",
1041
0
            Extension::EXTDirectfbSurface => "VK_EXT_directfb_surface",
1042
0
            Extension::VALVEMutableDescriptorType => "VK_VALVE_mutable_descriptor_type",
1043
0
            Extension::EXTVertexInputDynamicState => "VK_EXT_vertex_input_dynamic_state",
1044
0
            Extension::EXTPhysicalDeviceDrm => "VK_EXT_physical_device_drm",
1045
0
            Extension::EXTDeviceAddressBindingReport => "VK_EXT_device_address_binding_report",
1046
0
            Extension::EXTDepthClipControl => "VK_EXT_depth_clip_control",
1047
0
            Extension::EXTPrimitiveTopologyListRestart => "VK_EXT_primitive_topology_list_restart",
1048
0
            Extension::FUCHSIAExternalMemory => "VK_FUCHSIA_external_memory",
1049
0
            Extension::FUCHSIAExternalSemaphore => "VK_FUCHSIA_external_semaphore",
1050
0
            Extension::FUCHSIABufferCollection => "VK_FUCHSIA_buffer_collection",
1051
0
            Extension::HUAWEISubpassShading => "VK_HUAWEI_subpass_shading",
1052
0
            Extension::HUAWEIInvocationMask => "VK_HUAWEI_invocation_mask",
1053
0
            Extension::NVExternalMemoryRdma => "VK_NV_external_memory_rdma",
1054
0
            Extension::EXTPipelineProperties => "VK_EXT_pipeline_properties",
1055
            Extension::EXTMultisampledRenderToSingleSampled => {
1056
0
                "VK_EXT_multisampled_render_to_single_sampled"
1057
            }
1058
0
            Extension::EXTExtendedDynamicState2 => "VK_EXT_extended_dynamic_state2",
1059
0
            Extension::QNXScreenSurface => "VK_QNX_screen_surface",
1060
0
            Extension::EXTColorWriteEnable => "VK_EXT_color_write_enable",
1061
0
            Extension::EXTPrimitivesGeneratedQuery => "VK_EXT_primitives_generated_query",
1062
0
            Extension::EXTGlobalPriorityQuery => "VK_EXT_global_priority_query",
1063
0
            Extension::EXTImageViewMinLod => "VK_EXT_image_view_min_lod",
1064
0
            Extension::EXTMultiDraw => "VK_EXT_multi_draw",
1065
0
            Extension::EXTImage2dViewOf3d => "VK_EXT_image_2d_view_of_3d",
1066
0
            Extension::EXTShaderTileImage => "VK_EXT_shader_tile_image",
1067
0
            Extension::EXTOpacityMicromap => "VK_EXT_opacity_micromap",
1068
0
            Extension::NVDisplacementMicromap => "VK_NV_displacement_micromap",
1069
0
            Extension::EXTLoadStoreOpNone => "VK_EXT_load_store_op_none",
1070
0
            Extension::HUAWEIClusterCullingShader => "VK_HUAWEI_cluster_culling_shader",
1071
0
            Extension::EXTBorderColorSwizzle => "VK_EXT_border_color_swizzle",
1072
0
            Extension::EXTPageableDeviceLocalMemory => "VK_EXT_pageable_device_local_memory",
1073
0
            Extension::ARMShaderCoreProperties => "VK_ARM_shader_core_properties",
1074
0
            Extension::EXTImageSlicedViewOf3d => "VK_EXT_image_sliced_view_of_3d",
1075
0
            Extension::VALVEDescriptorSetHostMapping => "VK_VALVE_descriptor_set_host_mapping",
1076
0
            Extension::EXTDepthClampZeroOne => "VK_EXT_depth_clamp_zero_one",
1077
0
            Extension::EXTNonSeamlessCubeMap => "VK_EXT_non_seamless_cube_map",
1078
0
            Extension::QCOMFragmentDensityMapOffset => "VK_QCOM_fragment_density_map_offset",
1079
0
            Extension::NVCopyMemoryIndirect => "VK_NV_copy_memory_indirect",
1080
0
            Extension::NVMemoryDecompression => "VK_NV_memory_decompression",
1081
0
            Extension::NVLinearColorAttachment => "VK_NV_linear_color_attachment",
1082
0
            Extension::GOOGLESurfacelessQuery => "VK_GOOGLE_surfaceless_query",
1083
            Extension::EXTImageCompressionControlSwapchain => {
1084
0
                "VK_EXT_image_compression_control_swapchain"
1085
            }
1086
0
            Extension::QCOMImageProcessing => "VK_QCOM_image_processing",
1087
0
            Extension::EXTExtendedDynamicState3 => "VK_EXT_extended_dynamic_state3",
1088
0
            Extension::EXTSubpassMergeFeedback => "VK_EXT_subpass_merge_feedback",
1089
0
            Extension::LUNARGDirectDriverLoading => "VK_LUNARG_direct_driver_loading",
1090
0
            Extension::EXTShaderModuleIdentifier => "VK_EXT_shader_module_identifier",
1091
            Extension::EXTRasterizationOrderAttachmentAccess => {
1092
0
                "VK_EXT_rasterization_order_attachment_access"
1093
            }
1094
0
            Extension::NVOpticalFlow => "VK_NV_optical_flow",
1095
0
            Extension::EXTLegacyDithering => "VK_EXT_legacy_dithering",
1096
0
            Extension::EXTPipelineProtectedAccess => "VK_EXT_pipeline_protected_access",
1097
0
            Extension::EXTShaderObject => "VK_EXT_shader_object",
1098
0
            Extension::QCOMTileProperties => "VK_QCOM_tile_properties",
1099
0
            Extension::SECAmigoProfiling => "VK_SEC_amigo_profiling",
1100
0
            Extension::QCOMMultiviewPerViewViewports => "VK_QCOM_multiview_per_view_viewports",
1101
0
            Extension::NVRayTracingInvocationReorder => "VK_NV_ray_tracing_invocation_reorder",
1102
0
            Extension::EXTMutableDescriptorType => "VK_EXT_mutable_descriptor_type",
1103
0
            Extension::ARMShaderCoreBuiltins => "VK_ARM_shader_core_builtins",
1104
0
            Extension::EXTPipelineLibraryGroupHandles => "VK_EXT_pipeline_library_group_handles",
1105
0
            Extension::QCOMMultiviewPerViewRenderAreas => "VK_QCOM_multiview_per_view_render_areas",
1106
            Extension::EXTAttachmentFeedbackLoopDynamicState => {
1107
0
                "VK_EXT_attachment_feedback_loop_dynamic_state"
1108
            }
1109
0
            Extension::KHRAccelerationStructure => "VK_KHR_acceleration_structure",
1110
0
            Extension::KHRRayTracingPipeline => "VK_KHR_ray_tracing_pipeline",
1111
0
            Extension::KHRRayQuery => "VK_KHR_ray_query",
1112
0
            Extension::EXTMeshShader => "VK_EXT_mesh_shader",
1113
        }
1114
11
    }
1115
}
1116
1117
pub(crate) struct DeviceDispatchTable {
1118
    pub core: Arc<ash::Device>,
1119
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1120
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1121
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1122
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1123
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1124
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1125
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1126
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1127
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1128
    khr_display_swapchain: Arc<ash::vk::KhrDisplaySwapchainFn>,
1129
    khr_video_decode_queue: Arc<ash::vk::KhrVideoDecodeQueueFn>,
1130
    khr_external_memory_win32: Arc<ash::vk::KhrExternalMemoryWin32Fn>,
1131
    khr_external_memory_fd: Arc<ash::vk::KhrExternalMemoryFdFn>,
1132
    khr_external_semaphore_win32: Arc<ash::vk::KhrExternalSemaphoreWin32Fn>,
1133
    khr_external_semaphore_fd: Arc<ash::vk::KhrExternalSemaphoreFdFn>,
1134
    khr_push_descriptor: Arc<ash::vk::KhrPushDescriptorFn>,
1135
    khr_shared_presentable_image: Arc<ash::vk::KhrSharedPresentableImageFn>,
1136
    khr_external_fence_win32: Arc<ash::vk::KhrExternalFenceWin32Fn>,
1137
    khr_external_fence_fd: Arc<ash::vk::KhrExternalFenceFdFn>,
1138
    khr_present_wait: Arc<ash::vk::KhrPresentWaitFn>,
1139
    khr_deferred_host_operations: Arc<ash::vk::KhrDeferredHostOperationsFn>,
1140
    khr_pipeline_executable_properties: Arc<ash::vk::KhrPipelineExecutablePropertiesFn>,
1141
    khr_video_encode_queue: Arc<ash::vk::KhrVideoEncodeQueueFn>,
1142
    khr_synchronization2: Arc<ash::vk::KhrSynchronization2Fn>,
1143
    khr_ray_tracing_maintenance1: Arc<ash::vk::KhrRayTracingMaintenance1Fn>,
1144
    android_native_buffer: Arc<ash::vk::AndroidNativeBufferFn>,
1145
    ext_debug_marker: Arc<ash::vk::ExtDebugMarkerFn>,
1146
    ext_transform_feedback: Arc<ash::vk::ExtTransformFeedbackFn>,
1147
    nvx_binary_import: Arc<ash::vk::NvxBinaryImportFn>,
1148
    nvx_image_view_handle: Arc<ash::vk::NvxImageViewHandleFn>,
1149
    amd_shader_info: Arc<ash::vk::AmdShaderInfoFn>,
1150
    nv_external_memory_win32: Arc<ash::vk::NvExternalMemoryWin32Fn>,
1151
    ext_conditional_rendering: Arc<ash::vk::ExtConditionalRenderingFn>,
1152
    nv_clip_space_w_scaling: Arc<ash::vk::NvClipSpaceWScalingFn>,
1153
    ext_display_control: Arc<ash::vk::ExtDisplayControlFn>,
1154
    google_display_timing: Arc<ash::vk::GoogleDisplayTimingFn>,
1155
    ext_discard_rectangles: Arc<ash::vk::ExtDiscardRectanglesFn>,
1156
    ext_hdr_metadata: Arc<ash::vk::ExtHdrMetadataFn>,
1157
    android_external_memory_android_hardware_buffer:
1158
        Arc<ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn>,
1159
    ext_image_drm_format_modifier: Arc<ash::vk::ExtImageDrmFormatModifierFn>,
1160
    ext_validation_cache: Arc<ash::vk::ExtValidationCacheFn>,
1161
    nv_shading_rate_image: Arc<ash::vk::NvShadingRateImageFn>,
1162
    nv_ray_tracing: Arc<ash::vk::NvRayTracingFn>,
1163
    khr_ray_tracing_pipeline: Arc<ash::vk::KhrRayTracingPipelineFn>,
1164
    ext_external_memory_host: Arc<ash::vk::ExtExternalMemoryHostFn>,
1165
    amd_buffer_marker: Arc<ash::vk::AmdBufferMarkerFn>,
1166
    nv_mesh_shader: Arc<ash::vk::NvMeshShaderFn>,
1167
    nv_scissor_exclusive: Arc<ash::vk::NvScissorExclusiveFn>,
1168
    nv_device_diagnostic_checkpoints: Arc<ash::vk::NvDeviceDiagnosticCheckpointsFn>,
1169
    intel_performance_query: Arc<ash::vk::IntelPerformanceQueryFn>,
1170
    amd_display_native_hdr: Arc<ash::vk::AmdDisplayNativeHdrFn>,
1171
    ext_line_rasterization: Arc<ash::vk::ExtLineRasterizationFn>,
1172
    ext_swapchain_maintenance1: Arc<ash::vk::ExtSwapchainMaintenance1Fn>,
1173
    nv_device_generated_commands: Arc<ash::vk::NvDeviceGeneratedCommandsFn>,
1174
    ext_metal_objects: Arc<ash::vk::ExtMetalObjectsFn>,
1175
    ext_descriptor_buffer: Arc<ash::vk::ExtDescriptorBufferFn>,
1176
    nv_fragment_shading_rate_enums: Arc<ash::vk::NvFragmentShadingRateEnumsFn>,
1177
    ext_image_compression_control: Arc<ash::vk::ExtImageCompressionControlFn>,
1178
    ext_vertex_input_dynamic_state: Arc<ash::vk::ExtVertexInputDynamicStateFn>,
1179
    fuchsia_external_memory: Arc<ash::vk::FuchsiaExternalMemoryFn>,
1180
    fuchsia_external_semaphore: Arc<ash::vk::FuchsiaExternalSemaphoreFn>,
1181
    fuchsia_buffer_collection: Arc<ash::vk::FuchsiaBufferCollectionFn>,
1182
    huawei_subpass_shading: Arc<ash::vk::HuaweiSubpassShadingFn>,
1183
    huawei_invocation_mask: Arc<ash::vk::HuaweiInvocationMaskFn>,
1184
    nv_external_memory_rdma: Arc<ash::vk::NvExternalMemoryRdmaFn>,
1185
    ext_pipeline_properties: Arc<ash::vk::ExtPipelinePropertiesFn>,
1186
    ext_extended_dynamic_state2: Arc<ash::vk::ExtExtendedDynamicState2Fn>,
1187
    ext_color_write_enable: Arc<ash::vk::ExtColorWriteEnableFn>,
1188
    ext_multi_draw: Arc<ash::vk::ExtMultiDrawFn>,
1189
    ext_opacity_micromap: Arc<ash::vk::ExtOpacityMicromapFn>,
1190
    ext_pageable_device_local_memory: Arc<ash::vk::ExtPageableDeviceLocalMemoryFn>,
1191
    valve_descriptor_set_host_mapping: Arc<ash::vk::ValveDescriptorSetHostMappingFn>,
1192
    nv_copy_memory_indirect: Arc<ash::vk::NvCopyMemoryIndirectFn>,
1193
    nv_memory_decompression: Arc<ash::vk::NvMemoryDecompressionFn>,
1194
    ext_extended_dynamic_state3: Arc<ash::vk::ExtExtendedDynamicState3Fn>,
1195
    ext_shader_module_identifier: Arc<ash::vk::ExtShaderModuleIdentifierFn>,
1196
    qcom_tile_properties: Arc<ash::vk::QcomTilePropertiesFn>,
1197
    khr_acceleration_structure: Arc<ash::vk::KhrAccelerationStructureFn>,
1198
    ext_mesh_shader: Arc<ash::vk::ExtMeshShaderFn>,
1199
}
1200
impl DeviceDispatchTable {
1201
23
    pub(crate) fn load(
1202
23
        get_device_proc_addr: vk::PFN_vkGetDeviceProcAddr,
1203
23
        device: Arc<ash::Device>,
1204
23
    ) -> Self {
1205
23
        let proc_addr_loader = get_device_proc_addr_loader(get_device_proc_addr, &device);
1206
23
        Self {
1207
23
            core: Arc::clone(&device),
1208
23
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1209
23
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1210
23
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1211
23
                &proc_addr_loader,
1212
23
            )),
1213
23
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1214
23
                &proc_addr_loader,
1215
23
            )),
1216
23
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1217
23
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1218
23
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1219
23
                &proc_addr_loader,
1220
23
            )),
1221
23
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1222
23
                &proc_addr_loader,
1223
23
            )),
1224
23
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1225
23
            khr_display_swapchain: Arc::new(ash::vk::KhrDisplaySwapchainFn::load(
1226
23
                &proc_addr_loader,
1227
23
            )),
1228
23
            khr_video_decode_queue: Arc::new(ash::vk::KhrVideoDecodeQueueFn::load(
1229
23
                &proc_addr_loader,
1230
23
            )),
1231
23
            khr_external_memory_win32: Arc::new(ash::vk::KhrExternalMemoryWin32Fn::load(
1232
23
                &proc_addr_loader,
1233
23
            )),
1234
23
            khr_external_memory_fd: Arc::new(ash::vk::KhrExternalMemoryFdFn::load(
1235
23
                &proc_addr_loader,
1236
23
            )),
1237
23
            khr_external_semaphore_win32: Arc::new(ash::vk::KhrExternalSemaphoreWin32Fn::load(
1238
23
                &proc_addr_loader,
1239
23
            )),
1240
23
            khr_external_semaphore_fd: Arc::new(ash::vk::KhrExternalSemaphoreFdFn::load(
1241
23
                &proc_addr_loader,
1242
23
            )),
1243
23
            khr_push_descriptor: Arc::new(ash::vk::KhrPushDescriptorFn::load(&proc_addr_loader)),
1244
23
            khr_shared_presentable_image: Arc::new(ash::vk::KhrSharedPresentableImageFn::load(
1245
23
                &proc_addr_loader,
1246
23
            )),
1247
23
            khr_external_fence_win32: Arc::new(ash::vk::KhrExternalFenceWin32Fn::load(
1248
23
                &proc_addr_loader,
1249
23
            )),
1250
23
            khr_external_fence_fd: Arc::new(ash::vk::KhrExternalFenceFdFn::load(&proc_addr_loader)),
1251
23
            khr_present_wait: Arc::new(ash::vk::KhrPresentWaitFn::load(&proc_addr_loader)),
1252
23
            khr_deferred_host_operations: Arc::new(ash::vk::KhrDeferredHostOperationsFn::load(
1253
23
                &proc_addr_loader,
1254
23
            )),
1255
23
            khr_pipeline_executable_properties: Arc::new(
1256
23
                ash::vk::KhrPipelineExecutablePropertiesFn::load(&proc_addr_loader),
1257
23
            ),
1258
23
            khr_video_encode_queue: Arc::new(ash::vk::KhrVideoEncodeQueueFn::load(
1259
23
                &proc_addr_loader,
1260
23
            )),
1261
23
            khr_synchronization2: Arc::new(ash::vk::KhrSynchronization2Fn::load(&proc_addr_loader)),
1262
23
            khr_ray_tracing_maintenance1: Arc::new(ash::vk::KhrRayTracingMaintenance1Fn::load(
1263
23
                &proc_addr_loader,
1264
23
            )),
1265
23
            android_native_buffer: Arc::new(ash::vk::AndroidNativeBufferFn::load(
1266
23
                &proc_addr_loader,
1267
23
            )),
1268
23
            ext_debug_marker: Arc::new(ash::vk::ExtDebugMarkerFn::load(&proc_addr_loader)),
1269
23
            ext_transform_feedback: Arc::new(ash::vk::ExtTransformFeedbackFn::load(
1270
23
                &proc_addr_loader,
1271
23
            )),
1272
23
            nvx_binary_import: Arc::new(ash::vk::NvxBinaryImportFn::load(&proc_addr_loader)),
1273
23
            nvx_image_view_handle: Arc::new(ash::vk::NvxImageViewHandleFn::load(&proc_addr_loader)),
1274
23
            amd_shader_info: Arc::new(ash::vk::AmdShaderInfoFn::load(&proc_addr_loader)),
1275
23
            nv_external_memory_win32: Arc::new(ash::vk::NvExternalMemoryWin32Fn::load(
1276
23
                &proc_addr_loader,
1277
23
            )),
1278
23
            ext_conditional_rendering: Arc::new(ash::vk::ExtConditionalRenderingFn::load(
1279
23
                &proc_addr_loader,
1280
23
            )),
1281
23
            nv_clip_space_w_scaling: Arc::new(ash::vk::NvClipSpaceWScalingFn::load(
1282
23
                &proc_addr_loader,
1283
23
            )),
1284
23
            ext_display_control: Arc::new(ash::vk::ExtDisplayControlFn::load(&proc_addr_loader)),
1285
23
            google_display_timing: Arc::new(ash::vk::GoogleDisplayTimingFn::load(
1286
23
                &proc_addr_loader,
1287
23
            )),
1288
23
            ext_discard_rectangles: Arc::new(ash::vk::ExtDiscardRectanglesFn::load(
1289
23
                &proc_addr_loader,
1290
23
            )),
1291
23
            ext_hdr_metadata: Arc::new(ash::vk::ExtHdrMetadataFn::load(&proc_addr_loader)),
1292
23
            android_external_memory_android_hardware_buffer: Arc::new(
1293
23
                ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn::load(&proc_addr_loader),
1294
23
            ),
1295
23
            ext_image_drm_format_modifier: Arc::new(ash::vk::ExtImageDrmFormatModifierFn::load(
1296
23
                &proc_addr_loader,
1297
23
            )),
1298
23
            ext_validation_cache: Arc::new(ash::vk::ExtValidationCacheFn::load(&proc_addr_loader)),
1299
23
            nv_shading_rate_image: Arc::new(ash::vk::NvShadingRateImageFn::load(&proc_addr_loader)),
1300
23
            nv_ray_tracing: Arc::new(ash::vk::NvRayTracingFn::load(&proc_addr_loader)),
1301
23
            khr_ray_tracing_pipeline: Arc::new(ash::vk::KhrRayTracingPipelineFn::load(
1302
23
                &proc_addr_loader,
1303
23
            )),
1304
23
            ext_external_memory_host: Arc::new(ash::vk::ExtExternalMemoryHostFn::load(
1305
23
                &proc_addr_loader,
1306
23
            )),
1307
23
            amd_buffer_marker: Arc::new(ash::vk::AmdBufferMarkerFn::load(&proc_addr_loader)),
1308
23
            nv_mesh_shader: Arc::new(ash::vk::NvMeshShaderFn::load(&proc_addr_loader)),
1309
23
            nv_scissor_exclusive: Arc::new(ash::vk::NvScissorExclusiveFn::load(&proc_addr_loader)),
1310
23
            nv_device_diagnostic_checkpoints: Arc::new(
1311
23
                ash::vk::NvDeviceDiagnosticCheckpointsFn::load(&proc_addr_loader),
1312
23
            ),
1313
23
            intel_performance_query: Arc::new(ash::vk::IntelPerformanceQueryFn::load(
1314
23
                &proc_addr_loader,
1315
23
            )),
1316
23
            amd_display_native_hdr: Arc::new(ash::vk::AmdDisplayNativeHdrFn::load(
1317
23
                &proc_addr_loader,
1318
23
            )),
1319
23
            ext_line_rasterization: Arc::new(ash::vk::ExtLineRasterizationFn::load(
1320
23
                &proc_addr_loader,
1321
23
            )),
1322
23
            ext_swapchain_maintenance1: Arc::new(ash::vk::ExtSwapchainMaintenance1Fn::load(
1323
23
                &proc_addr_loader,
1324
23
            )),
1325
23
            nv_device_generated_commands: Arc::new(ash::vk::NvDeviceGeneratedCommandsFn::load(
1326
23
                &proc_addr_loader,
1327
23
            )),
1328
23
            ext_metal_objects: Arc::new(ash::vk::ExtMetalObjectsFn::load(&proc_addr_loader)),
1329
23
            ext_descriptor_buffer: Arc::new(ash::vk::ExtDescriptorBufferFn::load(
1330
23
                &proc_addr_loader,
1331
23
            )),
1332
23
            nv_fragment_shading_rate_enums: Arc::new(ash::vk::NvFragmentShadingRateEnumsFn::load(
1333
23
                &proc_addr_loader,
1334
23
            )),
1335
23
            ext_image_compression_control: Arc::new(ash::vk::ExtImageCompressionControlFn::load(
1336
23
                &proc_addr_loader,
1337
23
            )),
1338
23
            ext_vertex_input_dynamic_state: Arc::new(ash::vk::ExtVertexInputDynamicStateFn::load(
1339
23
                &proc_addr_loader,
1340
23
            )),
1341
23
            fuchsia_external_memory: Arc::new(ash::vk::FuchsiaExternalMemoryFn::load(
1342
23
                &proc_addr_loader,
1343
23
            )),
1344
23
            fuchsia_external_semaphore: Arc::new(ash::vk::FuchsiaExternalSemaphoreFn::load(
1345
23
                &proc_addr_loader,
1346
23
            )),
1347
23
            fuchsia_buffer_collection: Arc::new(ash::vk::FuchsiaBufferCollectionFn::load(
1348
23
                &proc_addr_loader,
1349
23
            )),
1350
23
            huawei_subpass_shading: Arc::new(ash::vk::HuaweiSubpassShadingFn::load(
1351
23
                &proc_addr_loader,
1352
23
            )),
1353
23
            huawei_invocation_mask: Arc::new(ash::vk::HuaweiInvocationMaskFn::load(
1354
23
                &proc_addr_loader,
1355
23
            )),
1356
23
            nv_external_memory_rdma: Arc::new(ash::vk::NvExternalMemoryRdmaFn::load(
1357
23
                &proc_addr_loader,
1358
23
            )),
1359
23
            ext_pipeline_properties: Arc::new(ash::vk::ExtPipelinePropertiesFn::load(
1360
23
                &proc_addr_loader,
1361
23
            )),
1362
23
            ext_extended_dynamic_state2: Arc::new(ash::vk::ExtExtendedDynamicState2Fn::load(
1363
23
                &proc_addr_loader,
1364
23
            )),
1365
23
            ext_color_write_enable: Arc::new(ash::vk::ExtColorWriteEnableFn::load(
1366
23
                &proc_addr_loader,
1367
23
            )),
1368
23
            ext_multi_draw: Arc::new(ash::vk::ExtMultiDrawFn::load(&proc_addr_loader)),
1369
23
            ext_opacity_micromap: Arc::new(ash::vk::ExtOpacityMicromapFn::load(&proc_addr_loader)),
1370
23
            ext_pageable_device_local_memory: Arc::new(
1371
23
                ash::vk::ExtPageableDeviceLocalMemoryFn::load(&proc_addr_loader),
1372
23
            ),
1373
23
            valve_descriptor_set_host_mapping: Arc::new(
1374
23
                ash::vk::ValveDescriptorSetHostMappingFn::load(&proc_addr_loader),
1375
23
            ),
1376
23
            nv_copy_memory_indirect: Arc::new(ash::vk::NvCopyMemoryIndirectFn::load(
1377
23
                &proc_addr_loader,
1378
23
            )),
1379
23
            nv_memory_decompression: Arc::new(ash::vk::NvMemoryDecompressionFn::load(
1380
23
                &proc_addr_loader,
1381
23
            )),
1382
23
            ext_extended_dynamic_state3: Arc::new(ash::vk::ExtExtendedDynamicState3Fn::load(
1383
23
                &proc_addr_loader,
1384
23
            )),
1385
23
            ext_shader_module_identifier: Arc::new(ash::vk::ExtShaderModuleIdentifierFn::load(
1386
23
                &proc_addr_loader,
1387
23
            )),
1388
23
            qcom_tile_properties: Arc::new(ash::vk::QcomTilePropertiesFn::load(&proc_addr_loader)),
1389
23
            khr_acceleration_structure: Arc::new(ash::vk::KhrAccelerationStructureFn::load(
1390
23
                &proc_addr_loader,
1391
23
            )),
1392
23
            ext_mesh_shader: Arc::new(ash::vk::ExtMeshShaderFn::load(&proc_addr_loader)),
1393
23
        }
1394
23
    }
1395
}
1396
pub(crate) struct InstanceDispatchTable {
1397
    pub core: Arc<ash::Instance>,
1398
    khr_surface: Arc<ash::vk::KhrSurfaceFn>,
1399
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1400
    khr_display: Arc<ash::vk::KhrDisplayFn>,
1401
    khr_xlib_surface: Arc<ash::vk::KhrXlibSurfaceFn>,
1402
    khr_xcb_surface: Arc<ash::vk::KhrXcbSurfaceFn>,
1403
    khr_wayland_surface: Arc<ash::vk::KhrWaylandSurfaceFn>,
1404
    khr_android_surface: Arc<ash::vk::KhrAndroidSurfaceFn>,
1405
    khr_win32_surface: Arc<ash::vk::KhrWin32SurfaceFn>,
1406
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1407
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1408
    khr_get_surface_capabilities2: Arc<ash::vk::KhrGetSurfaceCapabilities2Fn>,
1409
    khr_get_display_properties2: Arc<ash::vk::KhrGetDisplayProperties2Fn>,
1410
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1411
    #[allow(deprecated)]
1412
    ext_debug_report: Arc<ash::vk::ExtDebugReportFn>,
1413
    ggp_stream_descriptor_surface: Arc<ash::vk::GgpStreamDescriptorSurfaceFn>,
1414
    nv_external_memory_capabilities: Arc<ash::vk::NvExternalMemoryCapabilitiesFn>,
1415
    nn_vi_surface: Arc<ash::vk::NnViSurfaceFn>,
1416
    ext_direct_mode_display: Arc<ash::vk::ExtDirectModeDisplayFn>,
1417
    ext_acquire_xlib_display: Arc<ash::vk::ExtAcquireXlibDisplayFn>,
1418
    ext_display_surface_counter: Arc<ash::vk::ExtDisplaySurfaceCounterFn>,
1419
    mvk_ios_surface: Arc<ash::vk::MvkIosSurfaceFn>,
1420
    mvk_macos_surface: Arc<ash::vk::MvkMacosSurfaceFn>,
1421
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1422
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1423
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1424
    fuchsia_imagepipe_surface: Arc<ash::vk::FuchsiaImagepipeSurfaceFn>,
1425
    ext_metal_surface: Arc<ash::vk::ExtMetalSurfaceFn>,
1426
    nv_cooperative_matrix: Arc<ash::vk::NvCooperativeMatrixFn>,
1427
    nv_coverage_reduction_mode: Arc<ash::vk::NvCoverageReductionModeFn>,
1428
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1429
    ext_headless_surface: Arc<ash::vk::ExtHeadlessSurfaceFn>,
1430
    ext_acquire_drm_display: Arc<ash::vk::ExtAcquireDrmDisplayFn>,
1431
    nv_acquire_winrt_display: Arc<ash::vk::NvAcquireWinrtDisplayFn>,
1432
    ext_directfb_surface: Arc<ash::vk::ExtDirectfbSurfaceFn>,
1433
    qnx_screen_surface: Arc<ash::vk::QnxScreenSurfaceFn>,
1434
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1435
}
1436
impl InstanceDispatchTable {
1437
50
    pub(crate) fn load(
1438
50
        get_instance_proc_addr: vk::PFN_vkGetInstanceProcAddr,
1439
50
        instance: Arc<ash::Instance>,
1440
50
    ) -> Self {
1441
50
        let proc_addr_loader = get_instance_proc_addr_loader(get_instance_proc_addr, &instance);
1442
50
        Self {
1443
50
            core: Arc::clone(&instance),
1444
50
            khr_surface: Arc::new(ash::vk::KhrSurfaceFn::load(&proc_addr_loader)),
1445
50
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1446
50
            khr_display: Arc::new(ash::vk::KhrDisplayFn::load(&proc_addr_loader)),
1447
50
            khr_xlib_surface: Arc::new(ash::vk::KhrXlibSurfaceFn::load(&proc_addr_loader)),
1448
50
            khr_xcb_surface: Arc::new(ash::vk::KhrXcbSurfaceFn::load(&proc_addr_loader)),
1449
50
            khr_wayland_surface: Arc::new(ash::vk::KhrWaylandSurfaceFn::load(&proc_addr_loader)),
1450
50
            khr_android_surface: Arc::new(ash::vk::KhrAndroidSurfaceFn::load(&proc_addr_loader)),
1451
50
            khr_win32_surface: Arc::new(ash::vk::KhrWin32SurfaceFn::load(&proc_addr_loader)),
1452
50
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1453
50
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1454
50
                &proc_addr_loader,
1455
50
            )),
1456
50
            khr_get_surface_capabilities2: Arc::new(ash::vk::KhrGetSurfaceCapabilities2Fn::load(
1457
50
                &proc_addr_loader,
1458
50
            )),
1459
50
            khr_get_display_properties2: Arc::new(ash::vk::KhrGetDisplayProperties2Fn::load(
1460
50
                &proc_addr_loader,
1461
50
            )),
1462
50
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1463
50
                &proc_addr_loader,
1464
50
            )),
1465
50
            ext_debug_report: Arc::new(ash::vk::ExtDebugReportFn::load(&proc_addr_loader)),
1466
50
            ggp_stream_descriptor_surface: Arc::new(ash::vk::GgpStreamDescriptorSurfaceFn::load(
1467
50
                &proc_addr_loader,
1468
50
            )),
1469
50
            nv_external_memory_capabilities: Arc::new(
1470
50
                ash::vk::NvExternalMemoryCapabilitiesFn::load(&proc_addr_loader),
1471
50
            ),
1472
50
            nn_vi_surface: Arc::new(ash::vk::NnViSurfaceFn::load(&proc_addr_loader)),
1473
50
            ext_direct_mode_display: Arc::new(ash::vk::ExtDirectModeDisplayFn::load(
1474
50
                &proc_addr_loader,
1475
50
            )),
1476
50
            ext_acquire_xlib_display: Arc::new(ash::vk::ExtAcquireXlibDisplayFn::load(
1477
50
                &proc_addr_loader,
1478
50
            )),
1479
50
            ext_display_surface_counter: Arc::new(ash::vk::ExtDisplaySurfaceCounterFn::load(
1480
50
                &proc_addr_loader,
1481
50
            )),
1482
50
            mvk_ios_surface: Arc::new(ash::vk::MvkIosSurfaceFn::load(&proc_addr_loader)),
1483
50
            mvk_macos_surface: Arc::new(ash::vk::MvkMacosSurfaceFn::load(&proc_addr_loader)),
1484
50
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1485
50
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1486
50
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1487
50
                &proc_addr_loader,
1488
50
            )),
1489
50
            fuchsia_imagepipe_surface: Arc::new(ash::vk::FuchsiaImagepipeSurfaceFn::load(
1490
50
                &proc_addr_loader,
1491
50
            )),
1492
50
            ext_metal_surface: Arc::new(ash::vk::ExtMetalSurfaceFn::load(&proc_addr_loader)),
1493
50
            nv_cooperative_matrix: Arc::new(ash::vk::NvCooperativeMatrixFn::load(
1494
50
                &proc_addr_loader,
1495
50
            )),
1496
50
            nv_coverage_reduction_mode: Arc::new(ash::vk::NvCoverageReductionModeFn::load(
1497
50
                &proc_addr_loader,
1498
50
            )),
1499
50
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1500
50
                &proc_addr_loader,
1501
50
            )),
1502
50
            ext_headless_surface: Arc::new(ash::vk::ExtHeadlessSurfaceFn::load(&proc_addr_loader)),
1503
50
            ext_acquire_drm_display: Arc::new(ash::vk::ExtAcquireDrmDisplayFn::load(
1504
50
                &proc_addr_loader,
1505
50
            )),
1506
50
            nv_acquire_winrt_display: Arc::new(ash::vk::NvAcquireWinrtDisplayFn::load(
1507
50
                &proc_addr_loader,
1508
50
            )),
1509
50
            ext_directfb_surface: Arc::new(ash::vk::ExtDirectfbSurfaceFn::load(&proc_addr_loader)),
1510
50
            qnx_screen_surface: Arc::new(ash::vk::QnxScreenSurfaceFn::load(&proc_addr_loader)),
1511
50
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1512
50
        }
1513
50
    }
1514
}
1515
1516
// Unhandled commands:
1517
// * vkMapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1518
// * vkUnmapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1519
// * vkCmdSetDiscardRectangleEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1520
// * vkCmdSetDiscardRectangleModeEXT: The ash Rust binding doesn't have proper bindings yet.
1521
// * vkCmdSetExclusiveScissorEnableNV: The ash Rust binding doesn't have proper bindings yet.
1522
// * vkGetDeviceFaultInfoEXT: The length info and the data pointer are nested in structs.
1523
// * vkCmdDrawClusterHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1524
// * vkCmdDrawClusterIndirectHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1525
// * vkCreateShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1526
// * vkDestroyShaderEXT: The ash Rust binding doesn't have proper bindings yet.
1527
// * vkGetShaderBinaryDataEXT: The ash Rust binding doesn't have proper bindings yet.
1528
// * vkCmdBindShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1529
// * vkCmdSetAttachmentFeedbackLoopEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1530
// * vkCmdBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1531
//   yet.
1532
// * vkCmdBuildAccelerationStructuresIndirectKHR: Dynamic multi-dimensional array bindings are not
1533
//   supported yet.
1534
// * vkBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1535
//   yet.
1536
1537
impl<T: Layer> Global<T> {
1538
74
    pub(crate) fn create_device_commands(
1539
74
        &self,
1540
74
        instance_info: &T::InstanceInfo,
1541
74
        device_info: Option<&T::DeviceInfo>,
1542
74
    ) -> Box<[VulkanCommand]> {
1543
74
        let hooked_commands = self
1544
74
            .layer_info
1545
74
            .hooked_device_commands(instance_info, device_info)
1546
74
            .collect::<HashSet<_>>();
1547
74
        Box::new([
1548
74
            VulkanCommand {
1549
74
                name: "vkAcquireFullScreenExclusiveModeEXT",
1550
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
1551
74
                hooked: hooked_commands
1552
74
                    .contains(&LayerVulkanCommand::AcquireFullScreenExclusiveModeExt),
1553
74
                proc: unsafe {
1554
74
                    std::mem::transmute::<
1555
74
                        vk::PFN_vkAcquireFullScreenExclusiveModeEXT,
1556
74
                        vk::PFN_vkVoidFunction,
1557
74
                    >(Self::acquire_full_screen_exclusive_mode_ext)
1558
74
                },
1559
74
            },
1560
74
            VulkanCommand {
1561
74
                name: "vkAcquireImageANDROID",
1562
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
1563
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireImageAndroid),
1564
74
                proc: unsafe {
1565
74
                    std::mem::transmute::<vk::PFN_vkAcquireImageANDROID, vk::PFN_vkVoidFunction>(
1566
74
                        Self::acquire_image_android,
1567
74
                    )
1568
74
                },
1569
74
            },
1570
74
            VulkanCommand {
1571
74
                name: "vkAcquireNextImage2KHR",
1572
74
                features: smallvec![
1573
0
                    Feature::Extension(Extension::KHRSwapchain),
1574
0
                    Feature::Extension(Extension::KHRDeviceGroup)
1575
                ],
1576
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImage2Khr),
1577
74
                proc: unsafe {
1578
74
                    std::mem::transmute::<vk::PFN_vkAcquireNextImage2KHR, vk::PFN_vkVoidFunction>(
1579
74
                        Self::acquire_next_image2_khr,
1580
74
                    )
1581
74
                },
1582
74
            },
1583
74
            VulkanCommand {
1584
74
                name: "vkAcquireNextImageKHR",
1585
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
1586
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImageKhr),
1587
74
                proc: unsafe {
1588
74
                    std::mem::transmute::<vk::PFN_vkAcquireNextImageKHR, vk::PFN_vkVoidFunction>(
1589
74
                        Self::acquire_next_image_khr,
1590
74
                    )
1591
74
                },
1592
74
            },
1593
74
            VulkanCommand {
1594
74
                name: "vkAcquirePerformanceConfigurationINTEL",
1595
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
1596
74
                hooked: hooked_commands
1597
74
                    .contains(&LayerVulkanCommand::AcquirePerformanceConfigurationIntel),
1598
74
                proc: unsafe {
1599
74
                    std::mem::transmute::<
1600
74
                        vk::PFN_vkAcquirePerformanceConfigurationINTEL,
1601
74
                        vk::PFN_vkVoidFunction,
1602
74
                    >(Self::acquire_performance_configuration_intel)
1603
74
                },
1604
74
            },
1605
74
            VulkanCommand {
1606
74
                name: "vkAcquireProfilingLockKHR",
1607
74
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
1608
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireProfilingLockKhr),
1609
74
                proc: unsafe {
1610
74
                    std::mem::transmute::<vk::PFN_vkAcquireProfilingLockKHR, vk::PFN_vkVoidFunction>(
1611
74
                        Self::acquire_profiling_lock_khr,
1612
74
                    )
1613
74
                },
1614
74
            },
1615
74
            VulkanCommand {
1616
74
                name: "vkAllocateCommandBuffers",
1617
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1618
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateCommandBuffers),
1619
74
                proc: unsafe {
1620
74
                    std::mem::transmute::<vk::PFN_vkAllocateCommandBuffers, vk::PFN_vkVoidFunction>(
1621
74
                        Self::allocate_command_buffers,
1622
74
                    )
1623
74
                },
1624
74
            },
1625
74
            VulkanCommand {
1626
74
                name: "vkAllocateDescriptorSets",
1627
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1628
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateDescriptorSets),
1629
74
                proc: unsafe {
1630
74
                    std::mem::transmute::<vk::PFN_vkAllocateDescriptorSets, vk::PFN_vkVoidFunction>(
1631
74
                        Self::allocate_descriptor_sets,
1632
74
                    )
1633
74
                },
1634
74
            },
1635
74
            VulkanCommand {
1636
74
                name: "vkAllocateMemory",
1637
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1638
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateMemory),
1639
74
                proc: unsafe {
1640
74
                    std::mem::transmute::<vk::PFN_vkAllocateMemory, vk::PFN_vkVoidFunction>(
1641
74
                        Self::allocate_memory,
1642
74
                    )
1643
74
                },
1644
74
            },
1645
74
            VulkanCommand {
1646
74
                name: "vkBeginCommandBuffer",
1647
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1648
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BeginCommandBuffer),
1649
74
                proc: unsafe {
1650
74
                    std::mem::transmute::<vk::PFN_vkBeginCommandBuffer, vk::PFN_vkVoidFunction>(
1651
74
                        Self::begin_command_buffer,
1652
74
                    )
1653
74
                },
1654
74
            },
1655
74
            VulkanCommand {
1656
74
                name: "vkBindAccelerationStructureMemoryNV",
1657
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
1658
74
                hooked: hooked_commands
1659
74
                    .contains(&LayerVulkanCommand::BindAccelerationStructureMemoryNv),
1660
74
                proc: unsafe {
1661
74
                    std::mem::transmute::<
1662
74
                        vk::PFN_vkBindAccelerationStructureMemoryNV,
1663
74
                        vk::PFN_vkVoidFunction,
1664
74
                    >(Self::bind_acceleration_structure_memory_nv)
1665
74
                },
1666
74
            },
1667
74
            VulkanCommand {
1668
74
                name: "vkBindBufferMemory",
1669
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1670
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory),
1671
74
                proc: unsafe {
1672
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory, vk::PFN_vkVoidFunction>(
1673
74
                        Self::bind_buffer_memory,
1674
74
                    )
1675
74
                },
1676
74
            },
1677
74
            VulkanCommand {
1678
74
                name: "vkBindBufferMemory2",
1679
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1680
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1681
74
                proc: unsafe {
1682
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1683
74
                        Self::bind_buffer_memory2,
1684
74
                    )
1685
74
                },
1686
74
            },
1687
74
            VulkanCommand {
1688
74
                name: "vkBindBufferMemory2KHR",
1689
74
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1690
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1691
74
                proc: unsafe {
1692
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1693
74
                        Self::bind_buffer_memory2,
1694
74
                    )
1695
74
                },
1696
74
            },
1697
74
            VulkanCommand {
1698
74
                name: "vkBindImageMemory",
1699
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1700
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory),
1701
74
                proc: unsafe {
1702
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory, vk::PFN_vkVoidFunction>(
1703
74
                        Self::bind_image_memory,
1704
74
                    )
1705
74
                },
1706
74
            },
1707
74
            VulkanCommand {
1708
74
                name: "vkBindImageMemory2",
1709
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1710
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1711
74
                proc: unsafe {
1712
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1713
74
                        Self::bind_image_memory2,
1714
74
                    )
1715
74
                },
1716
74
            },
1717
74
            VulkanCommand {
1718
74
                name: "vkBindImageMemory2KHR",
1719
74
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1720
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1721
74
                proc: unsafe {
1722
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1723
74
                        Self::bind_image_memory2,
1724
74
                    )
1725
74
                },
1726
74
            },
1727
74
            VulkanCommand {
1728
74
                name: "vkBindOpticalFlowSessionImageNV",
1729
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
1730
74
                hooked: hooked_commands
1731
74
                    .contains(&LayerVulkanCommand::BindOpticalFlowSessionImageNv),
1732
74
                proc: unsafe {
1733
74
                    std::mem::transmute::<
1734
74
                        vk::PFN_vkBindOpticalFlowSessionImageNV,
1735
74
                        vk::PFN_vkVoidFunction,
1736
74
                    >(Self::bind_optical_flow_session_image_nv)
1737
74
                },
1738
74
            },
1739
74
            VulkanCommand {
1740
74
                name: "vkBindVideoSessionMemoryKHR",
1741
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1742
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindVideoSessionMemoryKhr),
1743
74
                proc: unsafe {
1744
74
                    std::mem::transmute::<vk::PFN_vkBindVideoSessionMemoryKHR, vk::PFN_vkVoidFunction>(
1745
74
                        Self::bind_video_session_memory_khr,
1746
74
                    )
1747
74
                },
1748
74
            },
1749
74
            VulkanCommand {
1750
74
                name: "vkBuildMicromapsEXT",
1751
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
1752
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BuildMicromapsExt),
1753
74
                proc: unsafe {
1754
74
                    std::mem::transmute::<vk::PFN_vkBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
1755
74
                        Self::build_micromaps_ext,
1756
74
                    )
1757
74
                },
1758
74
            },
1759
74
            VulkanCommand {
1760
74
                name: "vkCmdBeginConditionalRenderingEXT",
1761
74
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
1762
74
                hooked: hooked_commands
1763
74
                    .contains(&LayerVulkanCommand::CmdBeginConditionalRenderingExt),
1764
74
                proc: unsafe {
1765
74
                    std::mem::transmute::<
1766
74
                        vk::PFN_vkCmdBeginConditionalRenderingEXT,
1767
74
                        vk::PFN_vkVoidFunction,
1768
74
                    >(Self::cmd_begin_conditional_rendering_ext)
1769
74
                },
1770
74
            },
1771
74
            VulkanCommand {
1772
74
                name: "vkCmdBeginDebugUtilsLabelEXT",
1773
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
1774
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginDebugUtilsLabelExt),
1775
74
                proc: unsafe {
1776
74
                    std::mem::transmute::<
1777
74
                        vk::PFN_vkCmdBeginDebugUtilsLabelEXT,
1778
74
                        vk::PFN_vkVoidFunction,
1779
74
                    >(Self::cmd_begin_debug_utils_label_ext)
1780
74
                },
1781
74
            },
1782
74
            VulkanCommand {
1783
74
                name: "vkCmdBeginQuery",
1784
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1785
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQuery),
1786
74
                proc: unsafe {
1787
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginQuery, vk::PFN_vkVoidFunction>(
1788
74
                        Self::cmd_begin_query,
1789
74
                    )
1790
74
                },
1791
74
            },
1792
74
            VulkanCommand {
1793
74
                name: "vkCmdBeginQueryIndexedEXT",
1794
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1795
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQueryIndexedExt),
1796
74
                proc: unsafe {
1797
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginQueryIndexedEXT, vk::PFN_vkVoidFunction>(
1798
74
                        Self::cmd_begin_query_indexed_ext,
1799
74
                    )
1800
74
                },
1801
74
            },
1802
74
            VulkanCommand {
1803
74
                name: "vkCmdBeginRenderPass",
1804
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1805
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass),
1806
74
                proc: unsafe {
1807
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass, vk::PFN_vkVoidFunction>(
1808
74
                        Self::cmd_begin_render_pass,
1809
74
                    )
1810
74
                },
1811
74
            },
1812
74
            VulkanCommand {
1813
74
                name: "vkCmdBeginRenderPass2",
1814
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
1815
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1816
74
                proc: unsafe {
1817
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1818
74
                        Self::cmd_begin_render_pass2,
1819
74
                    )
1820
74
                },
1821
74
            },
1822
74
            VulkanCommand {
1823
74
                name: "vkCmdBeginRenderPass2KHR",
1824
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
1825
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1826
74
                proc: unsafe {
1827
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1828
74
                        Self::cmd_begin_render_pass2,
1829
74
                    )
1830
74
                },
1831
74
            },
1832
74
            VulkanCommand {
1833
74
                name: "vkCmdBeginRendering",
1834
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1835
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1836
74
                proc: unsafe {
1837
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1838
74
                        Self::cmd_begin_rendering,
1839
74
                    )
1840
74
                },
1841
74
            },
1842
74
            VulkanCommand {
1843
74
                name: "vkCmdBeginRenderingKHR",
1844
74
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
1845
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1846
74
                proc: unsafe {
1847
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1848
74
                        Self::cmd_begin_rendering,
1849
74
                    )
1850
74
                },
1851
74
            },
1852
74
            VulkanCommand {
1853
74
                name: "vkCmdBeginTransformFeedbackEXT",
1854
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1855
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginTransformFeedbackExt),
1856
74
                proc: unsafe {
1857
74
                    std::mem::transmute::<
1858
74
                        vk::PFN_vkCmdBeginTransformFeedbackEXT,
1859
74
                        vk::PFN_vkVoidFunction,
1860
74
                    >(Self::cmd_begin_transform_feedback_ext)
1861
74
                },
1862
74
            },
1863
74
            VulkanCommand {
1864
74
                name: "vkCmdBeginVideoCodingKHR",
1865
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1866
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginVideoCodingKhr),
1867
74
                proc: unsafe {
1868
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginVideoCodingKHR, vk::PFN_vkVoidFunction>(
1869
74
                        Self::cmd_begin_video_coding_khr,
1870
74
                    )
1871
74
                },
1872
74
            },
1873
74
            VulkanCommand {
1874
74
                name: "vkCmdBindDescriptorBufferEmbeddedSamplersEXT",
1875
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1876
74
                hooked: hooked_commands
1877
74
                    .contains(&LayerVulkanCommand::CmdBindDescriptorBufferEmbeddedSamplersExt),
1878
74
                proc: unsafe {
1879
74
                    std::mem::transmute::<
1880
74
                        vk::PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT,
1881
74
                        vk::PFN_vkVoidFunction,
1882
74
                    >(Self::cmd_bind_descriptor_buffer_embedded_samplers_ext)
1883
74
                },
1884
74
            },
1885
74
            VulkanCommand {
1886
74
                name: "vkCmdBindDescriptorBuffersEXT",
1887
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1888
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorBuffersExt),
1889
74
                proc: unsafe {
1890
74
                    std::mem::transmute::<
1891
74
                        vk::PFN_vkCmdBindDescriptorBuffersEXT,
1892
74
                        vk::PFN_vkVoidFunction,
1893
74
                    >(Self::cmd_bind_descriptor_buffers_ext)
1894
74
                },
1895
74
            },
1896
74
            VulkanCommand {
1897
74
                name: "vkCmdBindDescriptorSets",
1898
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1899
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorSets),
1900
74
                proc: unsafe {
1901
74
                    std::mem::transmute::<vk::PFN_vkCmdBindDescriptorSets, vk::PFN_vkVoidFunction>(
1902
74
                        Self::cmd_bind_descriptor_sets,
1903
74
                    )
1904
74
                },
1905
74
            },
1906
74
            VulkanCommand {
1907
74
                name: "vkCmdBindIndexBuffer",
1908
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1909
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindIndexBuffer),
1910
74
                proc: unsafe {
1911
74
                    std::mem::transmute::<vk::PFN_vkCmdBindIndexBuffer, vk::PFN_vkVoidFunction>(
1912
74
                        Self::cmd_bind_index_buffer,
1913
74
                    )
1914
74
                },
1915
74
            },
1916
74
            VulkanCommand {
1917
74
                name: "vkCmdBindInvocationMaskHUAWEI",
1918
74
                features: smallvec![
Feature::Extension(Extension::HUAWEIInvocationMask)0
],
1919
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindInvocationMaskHuawei),
1920
74
                proc: unsafe {
1921
74
                    std::mem::transmute::<
1922
74
                        vk::PFN_vkCmdBindInvocationMaskHUAWEI,
1923
74
                        vk::PFN_vkVoidFunction,
1924
74
                    >(Self::cmd_bind_invocation_mask_huawei)
1925
74
                },
1926
74
            },
1927
74
            VulkanCommand {
1928
74
                name: "vkCmdBindPipeline",
1929
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1930
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipeline),
1931
74
                proc: unsafe {
1932
74
                    std::mem::transmute::<vk::PFN_vkCmdBindPipeline, vk::PFN_vkVoidFunction>(
1933
74
                        Self::cmd_bind_pipeline,
1934
74
                    )
1935
74
                },
1936
74
            },
1937
74
            VulkanCommand {
1938
74
                name: "vkCmdBindPipelineShaderGroupNV",
1939
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
1940
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipelineShaderGroupNv),
1941
74
                proc: unsafe {
1942
74
                    std::mem::transmute::<
1943
74
                        vk::PFN_vkCmdBindPipelineShaderGroupNV,
1944
74
                        vk::PFN_vkVoidFunction,
1945
74
                    >(Self::cmd_bind_pipeline_shader_group_nv)
1946
74
                },
1947
74
            },
1948
74
            VulkanCommand {
1949
74
                name: "vkCmdBindShadingRateImageNV",
1950
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
1951
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindShadingRateImageNv),
1952
74
                proc: unsafe {
1953
74
                    std::mem::transmute::<vk::PFN_vkCmdBindShadingRateImageNV, vk::PFN_vkVoidFunction>(
1954
74
                        Self::cmd_bind_shading_rate_image_nv,
1955
74
                    )
1956
74
                },
1957
74
            },
1958
74
            VulkanCommand {
1959
74
                name: "vkCmdBindTransformFeedbackBuffersEXT",
1960
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1961
74
                hooked: hooked_commands
1962
74
                    .contains(&LayerVulkanCommand::CmdBindTransformFeedbackBuffersExt),
1963
74
                proc: unsafe {
1964
74
                    std::mem::transmute::<
1965
74
                        vk::PFN_vkCmdBindTransformFeedbackBuffersEXT,
1966
74
                        vk::PFN_vkVoidFunction,
1967
74
                    >(Self::cmd_bind_transform_feedback_buffers_ext)
1968
74
                },
1969
74
            },
1970
74
            VulkanCommand {
1971
74
                name: "vkCmdBindVertexBuffers",
1972
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1973
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers),
1974
74
                proc: unsafe {
1975
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers, vk::PFN_vkVoidFunction>(
1976
74
                        Self::cmd_bind_vertex_buffers,
1977
74
                    )
1978
74
                },
1979
74
            },
1980
74
            VulkanCommand {
1981
74
                name: "vkCmdBindVertexBuffers2",
1982
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1983
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
1984
74
                proc: unsafe {
1985
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
1986
74
                        Self::cmd_bind_vertex_buffers2,
1987
74
                    )
1988
74
                },
1989
74
            },
1990
74
            VulkanCommand {
1991
74
                name: "vkCmdBindVertexBuffers2EXT",
1992
74
                features: smallvec![
1993
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
1994
0
                    Feature::Extension(Extension::EXTShaderObject)
1995
                ],
1996
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
1997
74
                proc: unsafe {
1998
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
1999
74
                        Self::cmd_bind_vertex_buffers2,
2000
74
                    )
2001
74
                },
2002
74
            },
2003
74
            VulkanCommand {
2004
74
                name: "vkCmdBlitImage",
2005
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2006
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage),
2007
74
                proc: unsafe {
2008
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage, vk::PFN_vkVoidFunction>(
2009
74
                        Self::cmd_blit_image,
2010
74
                    )
2011
74
                },
2012
74
            },
2013
74
            VulkanCommand {
2014
74
                name: "vkCmdBlitImage2",
2015
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2016
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2017
74
                proc: unsafe {
2018
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2019
74
                        Self::cmd_blit_image2,
2020
74
                    )
2021
74
                },
2022
74
            },
2023
74
            VulkanCommand {
2024
74
                name: "vkCmdBlitImage2KHR",
2025
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2026
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2027
74
                proc: unsafe {
2028
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2029
74
                        Self::cmd_blit_image2,
2030
74
                    )
2031
74
                },
2032
74
            },
2033
74
            VulkanCommand {
2034
74
                name: "vkCmdBuildAccelerationStructureNV",
2035
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2036
74
                hooked: hooked_commands
2037
74
                    .contains(&LayerVulkanCommand::CmdBuildAccelerationStructureNv),
2038
74
                proc: unsafe {
2039
74
                    std::mem::transmute::<
2040
74
                        vk::PFN_vkCmdBuildAccelerationStructureNV,
2041
74
                        vk::PFN_vkVoidFunction,
2042
74
                    >(Self::cmd_build_acceleration_structure_nv)
2043
74
                },
2044
74
            },
2045
74
            VulkanCommand {
2046
74
                name: "vkCmdBuildMicromapsEXT",
2047
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2048
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBuildMicromapsExt),
2049
74
                proc: unsafe {
2050
74
                    std::mem::transmute::<vk::PFN_vkCmdBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
2051
74
                        Self::cmd_build_micromaps_ext,
2052
74
                    )
2053
74
                },
2054
74
            },
2055
74
            VulkanCommand {
2056
74
                name: "vkCmdClearAttachments",
2057
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2058
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearAttachments),
2059
74
                proc: unsafe {
2060
74
                    std::mem::transmute::<vk::PFN_vkCmdClearAttachments, vk::PFN_vkVoidFunction>(
2061
74
                        Self::cmd_clear_attachments,
2062
74
                    )
2063
74
                },
2064
74
            },
2065
74
            VulkanCommand {
2066
74
                name: "vkCmdClearColorImage",
2067
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2068
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearColorImage),
2069
74
                proc: unsafe {
2070
74
                    std::mem::transmute::<vk::PFN_vkCmdClearColorImage, vk::PFN_vkVoidFunction>(
2071
74
                        Self::cmd_clear_color_image,
2072
74
                    )
2073
74
                },
2074
74
            },
2075
74
            VulkanCommand {
2076
74
                name: "vkCmdClearDepthStencilImage",
2077
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2078
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearDepthStencilImage),
2079
74
                proc: unsafe {
2080
74
                    std::mem::transmute::<vk::PFN_vkCmdClearDepthStencilImage, vk::PFN_vkVoidFunction>(
2081
74
                        Self::cmd_clear_depth_stencil_image,
2082
74
                    )
2083
74
                },
2084
74
            },
2085
74
            VulkanCommand {
2086
74
                name: "vkCmdControlVideoCodingKHR",
2087
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2088
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdControlVideoCodingKhr),
2089
74
                proc: unsafe {
2090
74
                    std::mem::transmute::<vk::PFN_vkCmdControlVideoCodingKHR, vk::PFN_vkVoidFunction>(
2091
74
                        Self::cmd_control_video_coding_khr,
2092
74
                    )
2093
74
                },
2094
74
            },
2095
74
            VulkanCommand {
2096
74
                name: "vkCmdCopyAccelerationStructureKHR",
2097
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2098
74
                hooked: hooked_commands
2099
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureKhr),
2100
74
                proc: unsafe {
2101
74
                    std::mem::transmute::<
2102
74
                        vk::PFN_vkCmdCopyAccelerationStructureKHR,
2103
74
                        vk::PFN_vkVoidFunction,
2104
74
                    >(Self::cmd_copy_acceleration_structure_khr)
2105
74
                },
2106
74
            },
2107
74
            VulkanCommand {
2108
74
                name: "vkCmdCopyAccelerationStructureNV",
2109
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2110
74
                hooked: hooked_commands
2111
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureNv),
2112
74
                proc: unsafe {
2113
74
                    std::mem::transmute::<
2114
74
                        vk::PFN_vkCmdCopyAccelerationStructureNV,
2115
74
                        vk::PFN_vkVoidFunction,
2116
74
                    >(Self::cmd_copy_acceleration_structure_nv)
2117
74
                },
2118
74
            },
2119
74
            VulkanCommand {
2120
74
                name: "vkCmdCopyAccelerationStructureToMemoryKHR",
2121
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2122
74
                hooked: hooked_commands
2123
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureToMemoryKhr),
2124
74
                proc: unsafe {
2125
74
                    std::mem::transmute::<
2126
74
                        vk::PFN_vkCmdCopyAccelerationStructureToMemoryKHR,
2127
74
                        vk::PFN_vkVoidFunction,
2128
74
                    >(Self::cmd_copy_acceleration_structure_to_memory_khr)
2129
74
                },
2130
74
            },
2131
74
            VulkanCommand {
2132
74
                name: "vkCmdCopyBuffer",
2133
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2134
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer),
2135
74
                proc: unsafe {
2136
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer, vk::PFN_vkVoidFunction>(
2137
74
                        Self::cmd_copy_buffer,
2138
74
                    )
2139
74
                },
2140
74
            },
2141
74
            VulkanCommand {
2142
74
                name: "vkCmdCopyBuffer2",
2143
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2144
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2145
74
                proc: unsafe {
2146
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2147
74
                        Self::cmd_copy_buffer2,
2148
74
                    )
2149
74
                },
2150
74
            },
2151
74
            VulkanCommand {
2152
74
                name: "vkCmdCopyBuffer2KHR",
2153
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2154
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2155
74
                proc: unsafe {
2156
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2157
74
                        Self::cmd_copy_buffer2,
2158
74
                    )
2159
74
                },
2160
74
            },
2161
74
            VulkanCommand {
2162
74
                name: "vkCmdCopyBufferToImage",
2163
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2164
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage),
2165
74
                proc: unsafe {
2166
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage, vk::PFN_vkVoidFunction>(
2167
74
                        Self::cmd_copy_buffer_to_image,
2168
74
                    )
2169
74
                },
2170
74
            },
2171
74
            VulkanCommand {
2172
74
                name: "vkCmdCopyBufferToImage2",
2173
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2174
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2175
74
                proc: unsafe {
2176
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2177
74
                        Self::cmd_copy_buffer_to_image2,
2178
74
                    )
2179
74
                },
2180
74
            },
2181
74
            VulkanCommand {
2182
74
                name: "vkCmdCopyBufferToImage2KHR",
2183
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2184
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2185
74
                proc: unsafe {
2186
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2187
74
                        Self::cmd_copy_buffer_to_image2,
2188
74
                    )
2189
74
                },
2190
74
            },
2191
74
            VulkanCommand {
2192
74
                name: "vkCmdCopyImage",
2193
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2194
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage),
2195
74
                proc: unsafe {
2196
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage, vk::PFN_vkVoidFunction>(
2197
74
                        Self::cmd_copy_image,
2198
74
                    )
2199
74
                },
2200
74
            },
2201
74
            VulkanCommand {
2202
74
                name: "vkCmdCopyImage2",
2203
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2204
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2205
74
                proc: unsafe {
2206
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2207
74
                        Self::cmd_copy_image2,
2208
74
                    )
2209
74
                },
2210
74
            },
2211
74
            VulkanCommand {
2212
74
                name: "vkCmdCopyImage2KHR",
2213
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2214
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2215
74
                proc: unsafe {
2216
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2217
74
                        Self::cmd_copy_image2,
2218
74
                    )
2219
74
                },
2220
74
            },
2221
74
            VulkanCommand {
2222
74
                name: "vkCmdCopyImageToBuffer",
2223
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2224
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer),
2225
74
                proc: unsafe {
2226
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer, vk::PFN_vkVoidFunction>(
2227
74
                        Self::cmd_copy_image_to_buffer,
2228
74
                    )
2229
74
                },
2230
74
            },
2231
74
            VulkanCommand {
2232
74
                name: "vkCmdCopyImageToBuffer2",
2233
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2234
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2235
74
                proc: unsafe {
2236
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2237
74
                        Self::cmd_copy_image_to_buffer2,
2238
74
                    )
2239
74
                },
2240
74
            },
2241
74
            VulkanCommand {
2242
74
                name: "vkCmdCopyImageToBuffer2KHR",
2243
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2244
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2245
74
                proc: unsafe {
2246
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2247
74
                        Self::cmd_copy_image_to_buffer2,
2248
74
                    )
2249
74
                },
2250
74
            },
2251
74
            VulkanCommand {
2252
74
                name: "vkCmdCopyMemoryIndirectNV",
2253
74
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2254
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryIndirectNv),
2255
74
                proc: unsafe {
2256
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyMemoryIndirectNV, vk::PFN_vkVoidFunction>(
2257
74
                        Self::cmd_copy_memory_indirect_nv,
2258
74
                    )
2259
74
                },
2260
74
            },
2261
74
            VulkanCommand {
2262
74
                name: "vkCmdCopyMemoryToAccelerationStructureKHR",
2263
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2264
74
                hooked: hooked_commands
2265
74
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToAccelerationStructureKhr),
2266
74
                proc: unsafe {
2267
74
                    std::mem::transmute::<
2268
74
                        vk::PFN_vkCmdCopyMemoryToAccelerationStructureKHR,
2269
74
                        vk::PFN_vkVoidFunction,
2270
74
                    >(Self::cmd_copy_memory_to_acceleration_structure_khr)
2271
74
                },
2272
74
            },
2273
74
            VulkanCommand {
2274
74
                name: "vkCmdCopyMemoryToImageIndirectNV",
2275
74
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2276
74
                hooked: hooked_commands
2277
74
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToImageIndirectNv),
2278
74
                proc: unsafe {
2279
74
                    std::mem::transmute::<
2280
74
                        vk::PFN_vkCmdCopyMemoryToImageIndirectNV,
2281
74
                        vk::PFN_vkVoidFunction,
2282
74
                    >(Self::cmd_copy_memory_to_image_indirect_nv)
2283
74
                },
2284
74
            },
2285
74
            VulkanCommand {
2286
74
                name: "vkCmdCopyMemoryToMicromapEXT",
2287
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2288
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryToMicromapExt),
2289
74
                proc: unsafe {
2290
74
                    std::mem::transmute::<
2291
74
                        vk::PFN_vkCmdCopyMemoryToMicromapEXT,
2292
74
                        vk::PFN_vkVoidFunction,
2293
74
                    >(Self::cmd_copy_memory_to_micromap_ext)
2294
74
                },
2295
74
            },
2296
74
            VulkanCommand {
2297
74
                name: "vkCmdCopyMicromapEXT",
2298
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2299
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapExt),
2300
74
                proc: unsafe {
2301
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyMicromapEXT, vk::PFN_vkVoidFunction>(
2302
74
                        Self::cmd_copy_micromap_ext,
2303
74
                    )
2304
74
                },
2305
74
            },
2306
74
            VulkanCommand {
2307
74
                name: "vkCmdCopyMicromapToMemoryEXT",
2308
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2309
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapToMemoryExt),
2310
74
                proc: unsafe {
2311
74
                    std::mem::transmute::<
2312
74
                        vk::PFN_vkCmdCopyMicromapToMemoryEXT,
2313
74
                        vk::PFN_vkVoidFunction,
2314
74
                    >(Self::cmd_copy_micromap_to_memory_ext)
2315
74
                },
2316
74
            },
2317
74
            VulkanCommand {
2318
74
                name: "vkCmdCopyQueryPoolResults",
2319
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2320
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyQueryPoolResults),
2321
74
                proc: unsafe {
2322
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyQueryPoolResults, vk::PFN_vkVoidFunction>(
2323
74
                        Self::cmd_copy_query_pool_results,
2324
74
                    )
2325
74
                },
2326
74
            },
2327
74
            VulkanCommand {
2328
74
                name: "vkCmdCuLaunchKernelNVX",
2329
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
2330
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCuLaunchKernelNvx),
2331
74
                proc: unsafe {
2332
74
                    std::mem::transmute::<vk::PFN_vkCmdCuLaunchKernelNVX, vk::PFN_vkVoidFunction>(
2333
74
                        Self::cmd_cu_launch_kernel_nvx,
2334
74
                    )
2335
74
                },
2336
74
            },
2337
74
            VulkanCommand {
2338
74
                name: "vkCmdDebugMarkerBeginEXT",
2339
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2340
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerBeginExt),
2341
74
                proc: unsafe {
2342
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerBeginEXT, vk::PFN_vkVoidFunction>(
2343
74
                        Self::cmd_debug_marker_begin_ext,
2344
74
                    )
2345
74
                },
2346
74
            },
2347
74
            VulkanCommand {
2348
74
                name: "vkCmdDebugMarkerEndEXT",
2349
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2350
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerEndExt),
2351
74
                proc: unsafe {
2352
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerEndEXT, vk::PFN_vkVoidFunction>(
2353
74
                        Self::cmd_debug_marker_end_ext,
2354
74
                    )
2355
74
                },
2356
74
            },
2357
74
            VulkanCommand {
2358
74
                name: "vkCmdDebugMarkerInsertEXT",
2359
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2360
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerInsertExt),
2361
74
                proc: unsafe {
2362
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerInsertEXT, vk::PFN_vkVoidFunction>(
2363
74
                        Self::cmd_debug_marker_insert_ext,
2364
74
                    )
2365
74
                },
2366
74
            },
2367
74
            VulkanCommand {
2368
74
                name: "vkCmdDecodeVideoKHR",
2369
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoDecodeQueue)0
],
2370
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecodeVideoKhr),
2371
74
                proc: unsafe {
2372
74
                    std::mem::transmute::<vk::PFN_vkCmdDecodeVideoKHR, vk::PFN_vkVoidFunction>(
2373
74
                        Self::cmd_decode_video_khr,
2374
74
                    )
2375
74
                },
2376
74
            },
2377
74
            VulkanCommand {
2378
74
                name: "vkCmdDecompressMemoryIndirectCountNV",
2379
74
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2380
74
                hooked: hooked_commands
2381
74
                    .contains(&LayerVulkanCommand::CmdDecompressMemoryIndirectCountNv),
2382
74
                proc: unsafe {
2383
74
                    std::mem::transmute::<
2384
74
                        vk::PFN_vkCmdDecompressMemoryIndirectCountNV,
2385
74
                        vk::PFN_vkVoidFunction,
2386
74
                    >(Self::cmd_decompress_memory_indirect_count_nv)
2387
74
                },
2388
74
            },
2389
74
            VulkanCommand {
2390
74
                name: "vkCmdDecompressMemoryNV",
2391
74
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2392
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecompressMemoryNv),
2393
74
                proc: unsafe {
2394
74
                    std::mem::transmute::<vk::PFN_vkCmdDecompressMemoryNV, vk::PFN_vkVoidFunction>(
2395
74
                        Self::cmd_decompress_memory_nv,
2396
74
                    )
2397
74
                },
2398
74
            },
2399
74
            VulkanCommand {
2400
74
                name: "vkCmdDispatch",
2401
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2402
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatch),
2403
74
                proc: unsafe {
2404
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatch, vk::PFN_vkVoidFunction>(
2405
74
                        Self::cmd_dispatch,
2406
74
                    )
2407
74
                },
2408
74
            },
2409
74
            VulkanCommand {
2410
74
                name: "vkCmdDispatchBase",
2411
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
2412
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2413
74
                proc: unsafe {
2414
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2415
74
                        Self::cmd_dispatch_base,
2416
74
                    )
2417
74
                },
2418
74
            },
2419
74
            VulkanCommand {
2420
74
                name: "vkCmdDispatchBaseKHR",
2421
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
2422
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2423
74
                proc: unsafe {
2424
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2425
74
                        Self::cmd_dispatch_base,
2426
74
                    )
2427
74
                },
2428
74
            },
2429
74
            VulkanCommand {
2430
74
                name: "vkCmdDispatchIndirect",
2431
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2432
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchIndirect),
2433
74
                proc: unsafe {
2434
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchIndirect, vk::PFN_vkVoidFunction>(
2435
74
                        Self::cmd_dispatch_indirect,
2436
74
                    )
2437
74
                },
2438
74
            },
2439
74
            VulkanCommand {
2440
74
                name: "vkCmdDraw",
2441
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2442
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDraw),
2443
74
                proc: unsafe {
2444
74
                    std::mem::transmute::<vk::PFN_vkCmdDraw, vk::PFN_vkVoidFunction>(Self::cmd_draw)
2445
74
                },
2446
74
            },
2447
74
            VulkanCommand {
2448
74
                name: "vkCmdDrawIndexed",
2449
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2450
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexed),
2451
74
                proc: unsafe {
2452
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexed, vk::PFN_vkVoidFunction>(
2453
74
                        Self::cmd_draw_indexed,
2454
74
                    )
2455
74
                },
2456
74
            },
2457
74
            VulkanCommand {
2458
74
                name: "vkCmdDrawIndexedIndirect",
2459
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2460
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirect),
2461
74
                proc: unsafe {
2462
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexedIndirect, vk::PFN_vkVoidFunction>(
2463
74
                        Self::cmd_draw_indexed_indirect,
2464
74
                    )
2465
74
                },
2466
74
            },
2467
74
            VulkanCommand {
2468
74
                name: "vkCmdDrawIndexedIndirectCount",
2469
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2470
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2471
74
                proc: unsafe {
2472
74
                    std::mem::transmute::<
2473
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2474
74
                        vk::PFN_vkVoidFunction,
2475
74
                    >(Self::cmd_draw_indexed_indirect_count)
2476
74
                },
2477
74
            },
2478
74
            VulkanCommand {
2479
74
                name: "vkCmdDrawIndexedIndirectCountAMD",
2480
74
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2481
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2482
74
                proc: unsafe {
2483
74
                    std::mem::transmute::<
2484
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2485
74
                        vk::PFN_vkVoidFunction,
2486
74
                    >(Self::cmd_draw_indexed_indirect_count)
2487
74
                },
2488
74
            },
2489
74
            VulkanCommand {
2490
74
                name: "vkCmdDrawIndexedIndirectCountKHR",
2491
74
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2492
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2493
74
                proc: unsafe {
2494
74
                    std::mem::transmute::<
2495
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2496
74
                        vk::PFN_vkVoidFunction,
2497
74
                    >(Self::cmd_draw_indexed_indirect_count)
2498
74
                },
2499
74
            },
2500
74
            VulkanCommand {
2501
74
                name: "vkCmdDrawIndirect",
2502
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2503
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirect),
2504
74
                proc: unsafe {
2505
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirect, vk::PFN_vkVoidFunction>(
2506
74
                        Self::cmd_draw_indirect,
2507
74
                    )
2508
74
                },
2509
74
            },
2510
74
            VulkanCommand {
2511
74
                name: "vkCmdDrawIndirectByteCountEXT",
2512
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2513
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectByteCountExt),
2514
74
                proc: unsafe {
2515
74
                    std::mem::transmute::<
2516
74
                        vk::PFN_vkCmdDrawIndirectByteCountEXT,
2517
74
                        vk::PFN_vkVoidFunction,
2518
74
                    >(Self::cmd_draw_indirect_byte_count_ext)
2519
74
                },
2520
74
            },
2521
74
            VulkanCommand {
2522
74
                name: "vkCmdDrawIndirectCount",
2523
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2524
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2525
74
                proc: unsafe {
2526
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2527
74
                        Self::cmd_draw_indirect_count,
2528
74
                    )
2529
74
                },
2530
74
            },
2531
74
            VulkanCommand {
2532
74
                name: "vkCmdDrawIndirectCountAMD",
2533
74
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2534
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2535
74
                proc: unsafe {
2536
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2537
74
                        Self::cmd_draw_indirect_count,
2538
74
                    )
2539
74
                },
2540
74
            },
2541
74
            VulkanCommand {
2542
74
                name: "vkCmdDrawIndirectCountKHR",
2543
74
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2544
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2545
74
                proc: unsafe {
2546
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2547
74
                        Self::cmd_draw_indirect_count,
2548
74
                    )
2549
74
                },
2550
74
            },
2551
74
            VulkanCommand {
2552
74
                name: "vkCmdDrawMeshTasksEXT",
2553
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2554
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksExt),
2555
74
                proc: unsafe {
2556
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksEXT, vk::PFN_vkVoidFunction>(
2557
74
                        Self::cmd_draw_mesh_tasks_ext,
2558
74
                    )
2559
74
                },
2560
74
            },
2561
74
            VulkanCommand {
2562
74
                name: "vkCmdDrawMeshTasksIndirectCountEXT",
2563
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2564
74
                hooked: hooked_commands
2565
74
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountExt),
2566
74
                proc: unsafe {
2567
74
                    std::mem::transmute::<
2568
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountEXT,
2569
74
                        vk::PFN_vkVoidFunction,
2570
74
                    >(Self::cmd_draw_mesh_tasks_indirect_count_ext)
2571
74
                },
2572
74
            },
2573
74
            VulkanCommand {
2574
74
                name: "vkCmdDrawMeshTasksIndirectCountNV",
2575
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2576
74
                hooked: hooked_commands
2577
74
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountNv),
2578
74
                proc: unsafe {
2579
74
                    std::mem::transmute::<
2580
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountNV,
2581
74
                        vk::PFN_vkVoidFunction,
2582
74
                    >(Self::cmd_draw_mesh_tasks_indirect_count_nv)
2583
74
                },
2584
74
            },
2585
74
            VulkanCommand {
2586
74
                name: "vkCmdDrawMeshTasksIndirectEXT",
2587
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2588
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectExt),
2589
74
                proc: unsafe {
2590
74
                    std::mem::transmute::<
2591
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectEXT,
2592
74
                        vk::PFN_vkVoidFunction,
2593
74
                    >(Self::cmd_draw_mesh_tasks_indirect_ext)
2594
74
                },
2595
74
            },
2596
74
            VulkanCommand {
2597
74
                name: "vkCmdDrawMeshTasksIndirectNV",
2598
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2599
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectNv),
2600
74
                proc: unsafe {
2601
74
                    std::mem::transmute::<
2602
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectNV,
2603
74
                        vk::PFN_vkVoidFunction,
2604
74
                    >(Self::cmd_draw_mesh_tasks_indirect_nv)
2605
74
                },
2606
74
            },
2607
74
            VulkanCommand {
2608
74
                name: "vkCmdDrawMeshTasksNV",
2609
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2610
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksNv),
2611
74
                proc: unsafe {
2612
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksNV, vk::PFN_vkVoidFunction>(
2613
74
                        Self::cmd_draw_mesh_tasks_nv,
2614
74
                    )
2615
74
                },
2616
74
            },
2617
74
            VulkanCommand {
2618
74
                name: "vkCmdDrawMultiEXT",
2619
74
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2620
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiExt),
2621
74
                proc: unsafe {
2622
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiEXT, vk::PFN_vkVoidFunction>(
2623
74
                        Self::cmd_draw_multi_ext,
2624
74
                    )
2625
74
                },
2626
74
            },
2627
74
            VulkanCommand {
2628
74
                name: "vkCmdDrawMultiIndexedEXT",
2629
74
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2630
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiIndexedExt),
2631
74
                proc: unsafe {
2632
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiIndexedEXT, vk::PFN_vkVoidFunction>(
2633
74
                        Self::cmd_draw_multi_indexed_ext,
2634
74
                    )
2635
74
                },
2636
74
            },
2637
74
            VulkanCommand {
2638
74
                name: "vkCmdEncodeVideoKHR",
2639
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoEncodeQueue)0
],
2640
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEncodeVideoKhr),
2641
74
                proc: unsafe {
2642
74
                    std::mem::transmute::<vk::PFN_vkCmdEncodeVideoKHR, vk::PFN_vkVoidFunction>(
2643
74
                        Self::cmd_encode_video_khr,
2644
74
                    )
2645
74
                },
2646
74
            },
2647
74
            VulkanCommand {
2648
74
                name: "vkCmdEndConditionalRenderingEXT",
2649
74
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
2650
74
                hooked: hooked_commands
2651
74
                    .contains(&LayerVulkanCommand::CmdEndConditionalRenderingExt),
2652
74
                proc: unsafe {
2653
74
                    std::mem::transmute::<
2654
74
                        vk::PFN_vkCmdEndConditionalRenderingEXT,
2655
74
                        vk::PFN_vkVoidFunction,
2656
74
                    >(Self::cmd_end_conditional_rendering_ext)
2657
74
                },
2658
74
            },
2659
74
            VulkanCommand {
2660
74
                name: "vkCmdEndDebugUtilsLabelEXT",
2661
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2662
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndDebugUtilsLabelExt),
2663
74
                proc: unsafe {
2664
74
                    std::mem::transmute::<vk::PFN_vkCmdEndDebugUtilsLabelEXT, vk::PFN_vkVoidFunction>(
2665
74
                        Self::cmd_end_debug_utils_label_ext,
2666
74
                    )
2667
74
                },
2668
74
            },
2669
74
            VulkanCommand {
2670
74
                name: "vkCmdEndQuery",
2671
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2672
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQuery),
2673
74
                proc: unsafe {
2674
74
                    std::mem::transmute::<vk::PFN_vkCmdEndQuery, vk::PFN_vkVoidFunction>(
2675
74
                        Self::cmd_end_query,
2676
74
                    )
2677
74
                },
2678
74
            },
2679
74
            VulkanCommand {
2680
74
                name: "vkCmdEndQueryIndexedEXT",
2681
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2682
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQueryIndexedExt),
2683
74
                proc: unsafe {
2684
74
                    std::mem::transmute::<vk::PFN_vkCmdEndQueryIndexedEXT, vk::PFN_vkVoidFunction>(
2685
74
                        Self::cmd_end_query_indexed_ext,
2686
74
                    )
2687
74
                },
2688
74
            },
2689
74
            VulkanCommand {
2690
74
                name: "vkCmdEndRenderPass",
2691
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2692
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass),
2693
74
                proc: unsafe {
2694
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass, vk::PFN_vkVoidFunction>(
2695
74
                        Self::cmd_end_render_pass,
2696
74
                    )
2697
74
                },
2698
74
            },
2699
74
            VulkanCommand {
2700
74
                name: "vkCmdEndRenderPass2",
2701
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2702
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2703
74
                proc: unsafe {
2704
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2705
74
                        Self::cmd_end_render_pass2,
2706
74
                    )
2707
74
                },
2708
74
            },
2709
74
            VulkanCommand {
2710
74
                name: "vkCmdEndRenderPass2KHR",
2711
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2712
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2713
74
                proc: unsafe {
2714
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2715
74
                        Self::cmd_end_render_pass2,
2716
74
                    )
2717
74
                },
2718
74
            },
2719
74
            VulkanCommand {
2720
74
                name: "vkCmdEndRendering",
2721
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2722
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2723
74
                proc: unsafe {
2724
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2725
74
                        Self::cmd_end_rendering,
2726
74
                    )
2727
74
                },
2728
74
            },
2729
74
            VulkanCommand {
2730
74
                name: "vkCmdEndRenderingKHR",
2731
74
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
2732
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2733
74
                proc: unsafe {
2734
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2735
74
                        Self::cmd_end_rendering,
2736
74
                    )
2737
74
                },
2738
74
            },
2739
74
            VulkanCommand {
2740
74
                name: "vkCmdEndTransformFeedbackEXT",
2741
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2742
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndTransformFeedbackExt),
2743
74
                proc: unsafe {
2744
74
                    std::mem::transmute::<
2745
74
                        vk::PFN_vkCmdEndTransformFeedbackEXT,
2746
74
                        vk::PFN_vkVoidFunction,
2747
74
                    >(Self::cmd_end_transform_feedback_ext)
2748
74
                },
2749
74
            },
2750
74
            VulkanCommand {
2751
74
                name: "vkCmdEndVideoCodingKHR",
2752
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2753
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndVideoCodingKhr),
2754
74
                proc: unsafe {
2755
74
                    std::mem::transmute::<vk::PFN_vkCmdEndVideoCodingKHR, vk::PFN_vkVoidFunction>(
2756
74
                        Self::cmd_end_video_coding_khr,
2757
74
                    )
2758
74
                },
2759
74
            },
2760
74
            VulkanCommand {
2761
74
                name: "vkCmdExecuteCommands",
2762
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2763
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdExecuteCommands),
2764
74
                proc: unsafe {
2765
74
                    std::mem::transmute::<vk::PFN_vkCmdExecuteCommands, vk::PFN_vkVoidFunction>(
2766
74
                        Self::cmd_execute_commands,
2767
74
                    )
2768
74
                },
2769
74
            },
2770
74
            VulkanCommand {
2771
74
                name: "vkCmdExecuteGeneratedCommandsNV",
2772
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2773
74
                hooked: hooked_commands
2774
74
                    .contains(&LayerVulkanCommand::CmdExecuteGeneratedCommandsNv),
2775
74
                proc: unsafe {
2776
74
                    std::mem::transmute::<
2777
74
                        vk::PFN_vkCmdExecuteGeneratedCommandsNV,
2778
74
                        vk::PFN_vkVoidFunction,
2779
74
                    >(Self::cmd_execute_generated_commands_nv)
2780
74
                },
2781
74
            },
2782
74
            VulkanCommand {
2783
74
                name: "vkCmdFillBuffer",
2784
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2785
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdFillBuffer),
2786
74
                proc: unsafe {
2787
74
                    std::mem::transmute::<vk::PFN_vkCmdFillBuffer, vk::PFN_vkVoidFunction>(
2788
74
                        Self::cmd_fill_buffer,
2789
74
                    )
2790
74
                },
2791
74
            },
2792
74
            VulkanCommand {
2793
74
                name: "vkCmdInsertDebugUtilsLabelEXT",
2794
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2795
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdInsertDebugUtilsLabelExt),
2796
74
                proc: unsafe {
2797
74
                    std::mem::transmute::<
2798
74
                        vk::PFN_vkCmdInsertDebugUtilsLabelEXT,
2799
74
                        vk::PFN_vkVoidFunction,
2800
74
                    >(Self::cmd_insert_debug_utils_label_ext)
2801
74
                },
2802
74
            },
2803
74
            VulkanCommand {
2804
74
                name: "vkCmdNextSubpass",
2805
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2806
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass),
2807
74
                proc: unsafe {
2808
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass, vk::PFN_vkVoidFunction>(
2809
74
                        Self::cmd_next_subpass,
2810
74
                    )
2811
74
                },
2812
74
            },
2813
74
            VulkanCommand {
2814
74
                name: "vkCmdNextSubpass2",
2815
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2816
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2817
74
                proc: unsafe {
2818
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2819
74
                        Self::cmd_next_subpass2,
2820
74
                    )
2821
74
                },
2822
74
            },
2823
74
            VulkanCommand {
2824
74
                name: "vkCmdNextSubpass2KHR",
2825
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2826
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2827
74
                proc: unsafe {
2828
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2829
74
                        Self::cmd_next_subpass2,
2830
74
                    )
2831
74
                },
2832
74
            },
2833
74
            VulkanCommand {
2834
74
                name: "vkCmdOpticalFlowExecuteNV",
2835
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
2836
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdOpticalFlowExecuteNv),
2837
74
                proc: unsafe {
2838
74
                    std::mem::transmute::<vk::PFN_vkCmdOpticalFlowExecuteNV, vk::PFN_vkVoidFunction>(
2839
74
                        Self::cmd_optical_flow_execute_nv,
2840
74
                    )
2841
74
                },
2842
74
            },
2843
74
            VulkanCommand {
2844
74
                name: "vkCmdPipelineBarrier",
2845
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2846
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier),
2847
74
                proc: unsafe {
2848
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier, vk::PFN_vkVoidFunction>(
2849
74
                        Self::cmd_pipeline_barrier,
2850
74
                    )
2851
74
                },
2852
74
            },
2853
74
            VulkanCommand {
2854
74
                name: "vkCmdPipelineBarrier2",
2855
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2856
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2857
74
                proc: unsafe {
2858
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2859
74
                        Self::cmd_pipeline_barrier2,
2860
74
                    )
2861
74
                },
2862
74
            },
2863
74
            VulkanCommand {
2864
74
                name: "vkCmdPipelineBarrier2KHR",
2865
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2866
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2867
74
                proc: unsafe {
2868
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2869
74
                        Self::cmd_pipeline_barrier2,
2870
74
                    )
2871
74
                },
2872
74
            },
2873
74
            VulkanCommand {
2874
74
                name: "vkCmdPreprocessGeneratedCommandsNV",
2875
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2876
74
                hooked: hooked_commands
2877
74
                    .contains(&LayerVulkanCommand::CmdPreprocessGeneratedCommandsNv),
2878
74
                proc: unsafe {
2879
74
                    std::mem::transmute::<
2880
74
                        vk::PFN_vkCmdPreprocessGeneratedCommandsNV,
2881
74
                        vk::PFN_vkVoidFunction,
2882
74
                    >(Self::cmd_preprocess_generated_commands_nv)
2883
74
                },
2884
74
            },
2885
74
            VulkanCommand {
2886
74
                name: "vkCmdPushConstants",
2887
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2888
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushConstants),
2889
74
                proc: unsafe {
2890
74
                    std::mem::transmute::<vk::PFN_vkCmdPushConstants, vk::PFN_vkVoidFunction>(
2891
74
                        Self::cmd_push_constants,
2892
74
                    )
2893
74
                },
2894
74
            },
2895
74
            VulkanCommand {
2896
74
                name: "vkCmdPushDescriptorSetKHR",
2897
74
                features: smallvec![
Feature::Extension(Extension::KHRPushDescriptor)0
],
2898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushDescriptorSetKhr),
2899
74
                proc: unsafe {
2900
74
                    std::mem::transmute::<vk::PFN_vkCmdPushDescriptorSetKHR, vk::PFN_vkVoidFunction>(
2901
74
                        Self::cmd_push_descriptor_set_khr,
2902
74
                    )
2903
74
                },
2904
74
            },
2905
74
            VulkanCommand {
2906
74
                name: "vkCmdPushDescriptorSetWithTemplateKHR",
2907
74
                features: smallvec![
2908
0
                    Feature::Extension(Extension::KHRPushDescriptor),
2909
0
                    Feature::Extension(Extension::KHRDescriptorUpdateTemplate)
2910
                ],
2911
74
                hooked: hooked_commands
2912
74
                    .contains(&LayerVulkanCommand::CmdPushDescriptorSetWithTemplateKhr),
2913
74
                proc: unsafe {
2914
74
                    std::mem::transmute::<
2915
74
                        vk::PFN_vkCmdPushDescriptorSetWithTemplateKHR,
2916
74
                        vk::PFN_vkVoidFunction,
2917
74
                    >(Self::cmd_push_descriptor_set_with_template_khr)
2918
74
                },
2919
74
            },
2920
74
            VulkanCommand {
2921
74
                name: "vkCmdResetEvent",
2922
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2923
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent),
2924
74
                proc: unsafe {
2925
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent, vk::PFN_vkVoidFunction>(
2926
74
                        Self::cmd_reset_event,
2927
74
                    )
2928
74
                },
2929
74
            },
2930
74
            VulkanCommand {
2931
74
                name: "vkCmdResetEvent2",
2932
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2933
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2934
74
                proc: unsafe {
2935
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2936
74
                        Self::cmd_reset_event2,
2937
74
                    )
2938
74
                },
2939
74
            },
2940
74
            VulkanCommand {
2941
74
                name: "vkCmdResetEvent2KHR",
2942
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2943
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2944
74
                proc: unsafe {
2945
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2946
74
                        Self::cmd_reset_event2,
2947
74
                    )
2948
74
                },
2949
74
            },
2950
74
            VulkanCommand {
2951
74
                name: "vkCmdResetQueryPool",
2952
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2953
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetQueryPool),
2954
74
                proc: unsafe {
2955
74
                    std::mem::transmute::<vk::PFN_vkCmdResetQueryPool, vk::PFN_vkVoidFunction>(
2956
74
                        Self::cmd_reset_query_pool,
2957
74
                    )
2958
74
                },
2959
74
            },
2960
74
            VulkanCommand {
2961
74
                name: "vkCmdResolveImage",
2962
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2963
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage),
2964
74
                proc: unsafe {
2965
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage, vk::PFN_vkVoidFunction>(
2966
74
                        Self::cmd_resolve_image,
2967
74
                    )
2968
74
                },
2969
74
            },
2970
74
            VulkanCommand {
2971
74
                name: "vkCmdResolveImage2",
2972
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2973
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2974
74
                proc: unsafe {
2975
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2976
74
                        Self::cmd_resolve_image2,
2977
74
                    )
2978
74
                },
2979
74
            },
2980
74
            VulkanCommand {
2981
74
                name: "vkCmdResolveImage2KHR",
2982
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2983
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2984
74
                proc: unsafe {
2985
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2986
74
                        Self::cmd_resolve_image2,
2987
74
                    )
2988
74
                },
2989
74
            },
2990
74
            VulkanCommand {
2991
74
                name: "vkCmdSetAlphaToCoverageEnableEXT",
2992
74
                features: smallvec![
2993
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
2994
0
                    Feature::Extension(Extension::EXTShaderObject)
2995
                ],
2996
74
                hooked: hooked_commands
2997
74
                    .contains(&LayerVulkanCommand::CmdSetAlphaToCoverageEnableExt),
2998
74
                proc: unsafe {
2999
74
                    std::mem::transmute::<
3000
74
                        vk::PFN_vkCmdSetAlphaToCoverageEnableEXT,
3001
74
                        vk::PFN_vkVoidFunction,
3002
74
                    >(Self::cmd_set_alpha_to_coverage_enable_ext)
3003
74
                },
3004
74
            },
3005
74
            VulkanCommand {
3006
74
                name: "vkCmdSetAlphaToOneEnableEXT",
3007
74
                features: smallvec![
3008
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3009
0
                    Feature::Extension(Extension::EXTShaderObject)
3010
                ],
3011
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetAlphaToOneEnableExt),
3012
74
                proc: unsafe {
3013
74
                    std::mem::transmute::<vk::PFN_vkCmdSetAlphaToOneEnableEXT, vk::PFN_vkVoidFunction>(
3014
74
                        Self::cmd_set_alpha_to_one_enable_ext,
3015
74
                    )
3016
74
                },
3017
74
            },
3018
74
            VulkanCommand {
3019
74
                name: "vkCmdSetBlendConstants",
3020
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3021
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetBlendConstants),
3022
74
                proc: unsafe {
3023
74
                    std::mem::transmute::<vk::PFN_vkCmdSetBlendConstants, vk::PFN_vkVoidFunction>(
3024
74
                        Self::cmd_set_blend_constants,
3025
74
                    )
3026
74
                },
3027
74
            },
3028
74
            VulkanCommand {
3029
74
                name: "vkCmdSetCheckpointNV",
3030
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
3031
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCheckpointNv),
3032
74
                proc: unsafe {
3033
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCheckpointNV, vk::PFN_vkVoidFunction>(
3034
74
                        Self::cmd_set_checkpoint_nv,
3035
74
                    )
3036
74
                },
3037
74
            },
3038
74
            VulkanCommand {
3039
74
                name: "vkCmdSetCoarseSampleOrderNV",
3040
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
3041
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCoarseSampleOrderNv),
3042
74
                proc: unsafe {
3043
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCoarseSampleOrderNV, vk::PFN_vkVoidFunction>(
3044
74
                        Self::cmd_set_coarse_sample_order_nv,
3045
74
                    )
3046
74
                },
3047
74
            },
3048
74
            VulkanCommand {
3049
74
                name: "vkCmdSetColorBlendAdvancedEXT",
3050
74
                features: smallvec![
3051
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3052
0
                    Feature::Extension(Extension::EXTShaderObject)
3053
                ],
3054
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendAdvancedExt),
3055
74
                proc: unsafe {
3056
74
                    std::mem::transmute::<
3057
74
                        vk::PFN_vkCmdSetColorBlendAdvancedEXT,
3058
74
                        vk::PFN_vkVoidFunction,
3059
74
                    >(Self::cmd_set_color_blend_advanced_ext)
3060
74
                },
3061
74
            },
3062
74
            VulkanCommand {
3063
74
                name: "vkCmdSetColorBlendEnableEXT",
3064
74
                features: smallvec![
3065
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3066
0
                    Feature::Extension(Extension::EXTShaderObject)
3067
                ],
3068
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEnableExt),
3069
74
                proc: unsafe {
3070
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorBlendEnableEXT, vk::PFN_vkVoidFunction>(
3071
74
                        Self::cmd_set_color_blend_enable_ext,
3072
74
                    )
3073
74
                },
3074
74
            },
3075
74
            VulkanCommand {
3076
74
                name: "vkCmdSetColorBlendEquationEXT",
3077
74
                features: smallvec![
3078
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3079
0
                    Feature::Extension(Extension::EXTShaderObject)
3080
                ],
3081
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEquationExt),
3082
74
                proc: unsafe {
3083
74
                    std::mem::transmute::<
3084
74
                        vk::PFN_vkCmdSetColorBlendEquationEXT,
3085
74
                        vk::PFN_vkVoidFunction,
3086
74
                    >(Self::cmd_set_color_blend_equation_ext)
3087
74
                },
3088
74
            },
3089
74
            VulkanCommand {
3090
74
                name: "vkCmdSetColorWriteEnableEXT",
3091
74
                features: smallvec![
Feature::Extension(Extension::EXTColorWriteEnable)0
],
3092
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteEnableExt),
3093
74
                proc: unsafe {
3094
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteEnableEXT, vk::PFN_vkVoidFunction>(
3095
74
                        Self::cmd_set_color_write_enable_ext,
3096
74
                    )
3097
74
                },
3098
74
            },
3099
74
            VulkanCommand {
3100
74
                name: "vkCmdSetColorWriteMaskEXT",
3101
74
                features: smallvec![
3102
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3103
0
                    Feature::Extension(Extension::EXTShaderObject)
3104
                ],
3105
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteMaskExt),
3106
74
                proc: unsafe {
3107
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteMaskEXT, vk::PFN_vkVoidFunction>(
3108
74
                        Self::cmd_set_color_write_mask_ext,
3109
74
                    )
3110
74
                },
3111
74
            },
3112
74
            VulkanCommand {
3113
74
                name: "vkCmdSetConservativeRasterizationModeEXT",
3114
74
                features: smallvec![
3115
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3116
0
                    Feature::Extension(Extension::EXTShaderObject)
3117
                ],
3118
74
                hooked: hooked_commands
3119
74
                    .contains(&LayerVulkanCommand::CmdSetConservativeRasterizationModeExt),
3120
74
                proc: unsafe {
3121
74
                    std::mem::transmute::<
3122
74
                        vk::PFN_vkCmdSetConservativeRasterizationModeEXT,
3123
74
                        vk::PFN_vkVoidFunction,
3124
74
                    >(Self::cmd_set_conservative_rasterization_mode_ext)
3125
74
                },
3126
74
            },
3127
74
            VulkanCommand {
3128
74
                name: "vkCmdSetCoverageModulationModeNV",
3129
74
                features: smallvec![
3130
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3131
0
                    Feature::Extension(Extension::EXTShaderObject)
3132
                ],
3133
74
                hooked: hooked_commands
3134
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationModeNv),
3135
74
                proc: unsafe {
3136
74
                    std::mem::transmute::<
3137
74
                        vk::PFN_vkCmdSetCoverageModulationModeNV,
3138
74
                        vk::PFN_vkVoidFunction,
3139
74
                    >(Self::cmd_set_coverage_modulation_mode_nv)
3140
74
                },
3141
74
            },
3142
74
            VulkanCommand {
3143
74
                name: "vkCmdSetCoverageModulationTableEnableNV",
3144
74
                features: smallvec![
3145
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3146
0
                    Feature::Extension(Extension::EXTShaderObject)
3147
                ],
3148
74
                hooked: hooked_commands
3149
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableEnableNv),
3150
74
                proc: unsafe {
3151
74
                    std::mem::transmute::<
3152
74
                        vk::PFN_vkCmdSetCoverageModulationTableEnableNV,
3153
74
                        vk::PFN_vkVoidFunction,
3154
74
                    >(Self::cmd_set_coverage_modulation_table_enable_nv)
3155
74
                },
3156
74
            },
3157
74
            VulkanCommand {
3158
74
                name: "vkCmdSetCoverageModulationTableNV",
3159
74
                features: smallvec![
3160
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3161
0
                    Feature::Extension(Extension::EXTShaderObject)
3162
                ],
3163
74
                hooked: hooked_commands
3164
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableNv),
3165
74
                proc: unsafe {
3166
74
                    std::mem::transmute::<
3167
74
                        vk::PFN_vkCmdSetCoverageModulationTableNV,
3168
74
                        vk::PFN_vkVoidFunction,
3169
74
                    >(Self::cmd_set_coverage_modulation_table_nv)
3170
74
                },
3171
74
            },
3172
74
            VulkanCommand {
3173
74
                name: "vkCmdSetCoverageReductionModeNV",
3174
74
                features: smallvec![
3175
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3176
0
                    Feature::Extension(Extension::EXTShaderObject)
3177
                ],
3178
74
                hooked: hooked_commands
3179
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageReductionModeNv),
3180
74
                proc: unsafe {
3181
74
                    std::mem::transmute::<
3182
74
                        vk::PFN_vkCmdSetCoverageReductionModeNV,
3183
74
                        vk::PFN_vkVoidFunction,
3184
74
                    >(Self::cmd_set_coverage_reduction_mode_nv)
3185
74
                },
3186
74
            },
3187
74
            VulkanCommand {
3188
74
                name: "vkCmdSetCoverageToColorEnableNV",
3189
74
                features: smallvec![
3190
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3191
0
                    Feature::Extension(Extension::EXTShaderObject)
3192
                ],
3193
74
                hooked: hooked_commands
3194
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorEnableNv),
3195
74
                proc: unsafe {
3196
74
                    std::mem::transmute::<
3197
74
                        vk::PFN_vkCmdSetCoverageToColorEnableNV,
3198
74
                        vk::PFN_vkVoidFunction,
3199
74
                    >(Self::cmd_set_coverage_to_color_enable_nv)
3200
74
                },
3201
74
            },
3202
74
            VulkanCommand {
3203
74
                name: "vkCmdSetCoverageToColorLocationNV",
3204
74
                features: smallvec![
3205
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3206
0
                    Feature::Extension(Extension::EXTShaderObject)
3207
                ],
3208
74
                hooked: hooked_commands
3209
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorLocationNv),
3210
74
                proc: unsafe {
3211
74
                    std::mem::transmute::<
3212
74
                        vk::PFN_vkCmdSetCoverageToColorLocationNV,
3213
74
                        vk::PFN_vkVoidFunction,
3214
74
                    >(Self::cmd_set_coverage_to_color_location_nv)
3215
74
                },
3216
74
            },
3217
74
            VulkanCommand {
3218
74
                name: "vkCmdSetCullMode",
3219
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3220
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3221
74
                proc: unsafe {
3222
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3223
74
                        Self::cmd_set_cull_mode,
3224
74
                    )
3225
74
                },
3226
74
            },
3227
74
            VulkanCommand {
3228
74
                name: "vkCmdSetCullModeEXT",
3229
74
                features: smallvec![
3230
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3231
0
                    Feature::Extension(Extension::EXTShaderObject)
3232
                ],
3233
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3234
74
                proc: unsafe {
3235
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3236
74
                        Self::cmd_set_cull_mode,
3237
74
                    )
3238
74
                },
3239
74
            },
3240
74
            VulkanCommand {
3241
74
                name: "vkCmdSetDepthBias",
3242
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3243
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBias),
3244
74
                proc: unsafe {
3245
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBias, vk::PFN_vkVoidFunction>(
3246
74
                        Self::cmd_set_depth_bias,
3247
74
                    )
3248
74
                },
3249
74
            },
3250
74
            VulkanCommand {
3251
74
                name: "vkCmdSetDepthBiasEnable",
3252
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3253
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3254
74
                proc: unsafe {
3255
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3256
74
                        Self::cmd_set_depth_bias_enable,
3257
74
                    )
3258
74
                },
3259
74
            },
3260
74
            VulkanCommand {
3261
74
                name: "vkCmdSetDepthBiasEnableEXT",
3262
74
                features: smallvec![
3263
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3264
0
                    Feature::Extension(Extension::EXTShaderObject)
3265
                ],
3266
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3267
74
                proc: unsafe {
3268
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3269
74
                        Self::cmd_set_depth_bias_enable,
3270
74
                    )
3271
74
                },
3272
74
            },
3273
74
            VulkanCommand {
3274
74
                name: "vkCmdSetDepthBounds",
3275
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3276
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBounds),
3277
74
                proc: unsafe {
3278
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBounds, vk::PFN_vkVoidFunction>(
3279
74
                        Self::cmd_set_depth_bounds,
3280
74
                    )
3281
74
                },
3282
74
            },
3283
74
            VulkanCommand {
3284
74
                name: "vkCmdSetDepthBoundsTestEnable",
3285
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3286
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3287
74
                proc: unsafe {
3288
74
                    std::mem::transmute::<
3289
74
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3290
74
                        vk::PFN_vkVoidFunction,
3291
74
                    >(Self::cmd_set_depth_bounds_test_enable)
3292
74
                },
3293
74
            },
3294
74
            VulkanCommand {
3295
74
                name: "vkCmdSetDepthBoundsTestEnableEXT",
3296
74
                features: smallvec![
3297
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3298
0
                    Feature::Extension(Extension::EXTShaderObject)
3299
                ],
3300
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3301
74
                proc: unsafe {
3302
74
                    std::mem::transmute::<
3303
74
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3304
74
                        vk::PFN_vkVoidFunction,
3305
74
                    >(Self::cmd_set_depth_bounds_test_enable)
3306
74
                },
3307
74
            },
3308
74
            VulkanCommand {
3309
74
                name: "vkCmdSetDepthClampEnableEXT",
3310
74
                features: smallvec![
3311
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3312
0
                    Feature::Extension(Extension::EXTShaderObject)
3313
                ],
3314
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClampEnableExt),
3315
74
                proc: unsafe {
3316
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClampEnableEXT, vk::PFN_vkVoidFunction>(
3317
74
                        Self::cmd_set_depth_clamp_enable_ext,
3318
74
                    )
3319
74
                },
3320
74
            },
3321
74
            VulkanCommand {
3322
74
                name: "vkCmdSetDepthClipEnableEXT",
3323
74
                features: smallvec![
3324
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3325
0
                    Feature::Extension(Extension::EXTShaderObject)
3326
                ],
3327
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClipEnableExt),
3328
74
                proc: unsafe {
3329
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClipEnableEXT, vk::PFN_vkVoidFunction>(
3330
74
                        Self::cmd_set_depth_clip_enable_ext,
3331
74
                    )
3332
74
                },
3333
74
            },
3334
74
            VulkanCommand {
3335
74
                name: "vkCmdSetDepthClipNegativeOneToOneEXT",
3336
74
                features: smallvec![
3337
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3338
0
                    Feature::Extension(Extension::EXTShaderObject)
3339
                ],
3340
74
                hooked: hooked_commands
3341
74
                    .contains(&LayerVulkanCommand::CmdSetDepthClipNegativeOneToOneExt),
3342
74
                proc: unsafe {
3343
74
                    std::mem::transmute::<
3344
74
                        vk::PFN_vkCmdSetDepthClipNegativeOneToOneEXT,
3345
74
                        vk::PFN_vkVoidFunction,
3346
74
                    >(Self::cmd_set_depth_clip_negative_one_to_one_ext)
3347
74
                },
3348
74
            },
3349
74
            VulkanCommand {
3350
74
                name: "vkCmdSetDepthCompareOp",
3351
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3352
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3353
74
                proc: unsafe {
3354
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3355
74
                        Self::cmd_set_depth_compare_op,
3356
74
                    )
3357
74
                },
3358
74
            },
3359
74
            VulkanCommand {
3360
74
                name: "vkCmdSetDepthCompareOpEXT",
3361
74
                features: smallvec![
3362
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3363
0
                    Feature::Extension(Extension::EXTShaderObject)
3364
                ],
3365
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3366
74
                proc: unsafe {
3367
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3368
74
                        Self::cmd_set_depth_compare_op,
3369
74
                    )
3370
74
                },
3371
74
            },
3372
74
            VulkanCommand {
3373
74
                name: "vkCmdSetDepthTestEnable",
3374
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3375
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3376
74
                proc: unsafe {
3377
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3378
74
                        Self::cmd_set_depth_test_enable,
3379
74
                    )
3380
74
                },
3381
74
            },
3382
74
            VulkanCommand {
3383
74
                name: "vkCmdSetDepthTestEnableEXT",
3384
74
                features: smallvec![
3385
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3386
0
                    Feature::Extension(Extension::EXTShaderObject)
3387
                ],
3388
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3389
74
                proc: unsafe {
3390
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3391
74
                        Self::cmd_set_depth_test_enable,
3392
74
                    )
3393
74
                },
3394
74
            },
3395
74
            VulkanCommand {
3396
74
                name: "vkCmdSetDepthWriteEnable",
3397
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3398
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3399
74
                proc: unsafe {
3400
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3401
74
                        Self::cmd_set_depth_write_enable,
3402
74
                    )
3403
74
                },
3404
74
            },
3405
74
            VulkanCommand {
3406
74
                name: "vkCmdSetDepthWriteEnableEXT",
3407
74
                features: smallvec![
3408
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3409
0
                    Feature::Extension(Extension::EXTShaderObject)
3410
                ],
3411
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3412
74
                proc: unsafe {
3413
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3414
74
                        Self::cmd_set_depth_write_enable,
3415
74
                    )
3416
74
                },
3417
74
            },
3418
74
            VulkanCommand {
3419
74
                name: "vkCmdSetDescriptorBufferOffsetsEXT",
3420
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
3421
74
                hooked: hooked_commands
3422
74
                    .contains(&LayerVulkanCommand::CmdSetDescriptorBufferOffsetsExt),
3423
74
                proc: unsafe {
3424
74
                    std::mem::transmute::<
3425
74
                        vk::PFN_vkCmdSetDescriptorBufferOffsetsEXT,
3426
74
                        vk::PFN_vkVoidFunction,
3427
74
                    >(Self::cmd_set_descriptor_buffer_offsets_ext)
3428
74
                },
3429
74
            },
3430
74
            VulkanCommand {
3431
74
                name: "vkCmdSetDeviceMask",
3432
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
3433
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3434
74
                proc: unsafe {
3435
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3436
74
                        Self::cmd_set_device_mask,
3437
74
                    )
3438
74
                },
3439
74
            },
3440
74
            VulkanCommand {
3441
74
                name: "vkCmdSetDeviceMaskKHR",
3442
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
3443
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3444
74
                proc: unsafe {
3445
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3446
74
                        Self::cmd_set_device_mask,
3447
74
                    )
3448
74
                },
3449
74
            },
3450
74
            VulkanCommand {
3451
74
                name: "vkCmdSetDiscardRectangleEXT",
3452
74
                features: smallvec![
Feature::Extension(Extension::EXTDiscardRectangles)0
],
3453
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDiscardRectangleExt),
3454
74
                proc: unsafe {
3455
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDiscardRectangleEXT, vk::PFN_vkVoidFunction>(
3456
74
                        Self::cmd_set_discard_rectangle_ext,
3457
74
                    )
3458
74
                },
3459
74
            },
3460
74
            VulkanCommand {
3461
74
                name: "vkCmdSetEvent",
3462
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3463
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent),
3464
74
                proc: unsafe {
3465
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent, vk::PFN_vkVoidFunction>(
3466
74
                        Self::cmd_set_event,
3467
74
                    )
3468
74
                },
3469
74
            },
3470
74
            VulkanCommand {
3471
74
                name: "vkCmdSetEvent2",
3472
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3473
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3474
74
                proc: unsafe {
3475
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3476
74
                        Self::cmd_set_event2,
3477
74
                    )
3478
74
                },
3479
74
            },
3480
74
            VulkanCommand {
3481
74
                name: "vkCmdSetEvent2KHR",
3482
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
3483
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3484
74
                proc: unsafe {
3485
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3486
74
                        Self::cmd_set_event2,
3487
74
                    )
3488
74
                },
3489
74
            },
3490
74
            VulkanCommand {
3491
74
                name: "vkCmdSetExclusiveScissorNV",
3492
74
                features: smallvec![
Feature::Extension(Extension::NVScissorExclusive)0
],
3493
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetExclusiveScissorNv),
3494
74
                proc: unsafe {
3495
74
                    std::mem::transmute::<vk::PFN_vkCmdSetExclusiveScissorNV, vk::PFN_vkVoidFunction>(
3496
74
                        Self::cmd_set_exclusive_scissor_nv,
3497
74
                    )
3498
74
                },
3499
74
            },
3500
74
            VulkanCommand {
3501
74
                name: "vkCmdSetExtraPrimitiveOverestimationSizeEXT",
3502
74
                features: smallvec![
3503
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3504
0
                    Feature::Extension(Extension::EXTShaderObject)
3505
                ],
3506
74
                hooked: hooked_commands
3507
74
                    .contains(&LayerVulkanCommand::CmdSetExtraPrimitiveOverestimationSizeExt),
3508
74
                proc: unsafe {
3509
74
                    std::mem::transmute::<
3510
74
                        vk::PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT,
3511
74
                        vk::PFN_vkVoidFunction,
3512
74
                    >(Self::cmd_set_extra_primitive_overestimation_size_ext)
3513
74
                },
3514
74
            },
3515
74
            VulkanCommand {
3516
74
                name: "vkCmdSetFragmentShadingRateEnumNV",
3517
74
                features: smallvec![
Feature::Extension(Extension::NVFragmentShadingRateEnums)0
],
3518
74
                hooked: hooked_commands
3519
74
                    .contains(&LayerVulkanCommand::CmdSetFragmentShadingRateEnumNv),
3520
74
                proc: unsafe {
3521
74
                    std::mem::transmute::<
3522
74
                        vk::PFN_vkCmdSetFragmentShadingRateEnumNV,
3523
74
                        vk::PFN_vkVoidFunction,
3524
74
                    >(Self::cmd_set_fragment_shading_rate_enum_nv)
3525
74
                },
3526
74
            },
3527
74
            VulkanCommand {
3528
74
                name: "vkCmdSetFragmentShadingRateKHR",
3529
74
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
3530
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFragmentShadingRateKhr),
3531
74
                proc: unsafe {
3532
74
                    std::mem::transmute::<
3533
74
                        vk::PFN_vkCmdSetFragmentShadingRateKHR,
3534
74
                        vk::PFN_vkVoidFunction,
3535
74
                    >(Self::cmd_set_fragment_shading_rate_khr)
3536
74
                },
3537
74
            },
3538
74
            VulkanCommand {
3539
74
                name: "vkCmdSetFrontFace",
3540
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3541
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3542
74
                proc: unsafe {
3543
74
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3544
74
                        Self::cmd_set_front_face,
3545
74
                    )
3546
74
                },
3547
74
            },
3548
74
            VulkanCommand {
3549
74
                name: "vkCmdSetFrontFaceEXT",
3550
74
                features: smallvec![
3551
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3552
0
                    Feature::Extension(Extension::EXTShaderObject)
3553
                ],
3554
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3555
74
                proc: unsafe {
3556
74
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3557
74
                        Self::cmd_set_front_face,
3558
74
                    )
3559
74
                },
3560
74
            },
3561
74
            VulkanCommand {
3562
74
                name: "vkCmdSetLineRasterizationModeEXT",
3563
74
                features: smallvec![
3564
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3565
0
                    Feature::Extension(Extension::EXTShaderObject)
3566
                ],
3567
74
                hooked: hooked_commands
3568
74
                    .contains(&LayerVulkanCommand::CmdSetLineRasterizationModeExt),
3569
74
                proc: unsafe {
3570
74
                    std::mem::transmute::<
3571
74
                        vk::PFN_vkCmdSetLineRasterizationModeEXT,
3572
74
                        vk::PFN_vkVoidFunction,
3573
74
                    >(Self::cmd_set_line_rasterization_mode_ext)
3574
74
                },
3575
74
            },
3576
74
            VulkanCommand {
3577
74
                name: "vkCmdSetLineStippleEXT",
3578
74
                features: smallvec![
Feature::Extension(Extension::EXTLineRasterization)0
],
3579
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleExt),
3580
74
                proc: unsafe {
3581
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLineStippleEXT, vk::PFN_vkVoidFunction>(
3582
74
                        Self::cmd_set_line_stipple_ext,
3583
74
                    )
3584
74
                },
3585
74
            },
3586
74
            VulkanCommand {
3587
74
                name: "vkCmdSetLineStippleEnableEXT",
3588
74
                features: smallvec![
3589
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3590
0
                    Feature::Extension(Extension::EXTShaderObject)
3591
                ],
3592
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleEnableExt),
3593
74
                proc: unsafe {
3594
74
                    std::mem::transmute::<
3595
74
                        vk::PFN_vkCmdSetLineStippleEnableEXT,
3596
74
                        vk::PFN_vkVoidFunction,
3597
74
                    >(Self::cmd_set_line_stipple_enable_ext)
3598
74
                },
3599
74
            },
3600
74
            VulkanCommand {
3601
74
                name: "vkCmdSetLineWidth",
3602
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3603
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineWidth),
3604
74
                proc: unsafe {
3605
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLineWidth, vk::PFN_vkVoidFunction>(
3606
74
                        Self::cmd_set_line_width,
3607
74
                    )
3608
74
                },
3609
74
            },
3610
74
            VulkanCommand {
3611
74
                name: "vkCmdSetLogicOpEXT",
3612
74
                features: smallvec![
3613
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3614
0
                    Feature::Extension(Extension::EXTShaderObject)
3615
                ],
3616
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpExt),
3617
74
                proc: unsafe {
3618
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEXT, vk::PFN_vkVoidFunction>(
3619
74
                        Self::cmd_set_logic_op_ext,
3620
74
                    )
3621
74
                },
3622
74
            },
3623
74
            VulkanCommand {
3624
74
                name: "vkCmdSetLogicOpEnableEXT",
3625
74
                features: smallvec![
3626
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3627
0
                    Feature::Extension(Extension::EXTShaderObject)
3628
                ],
3629
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpEnableExt),
3630
74
                proc: unsafe {
3631
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEnableEXT, vk::PFN_vkVoidFunction>(
3632
74
                        Self::cmd_set_logic_op_enable_ext,
3633
74
                    )
3634
74
                },
3635
74
            },
3636
74
            VulkanCommand {
3637
74
                name: "vkCmdSetPatchControlPointsEXT",
3638
74
                features: smallvec![
3639
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3640
0
                    Feature::Extension(Extension::EXTShaderObject)
3641
                ],
3642
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPatchControlPointsExt),
3643
74
                proc: unsafe {
3644
74
                    std::mem::transmute::<
3645
74
                        vk::PFN_vkCmdSetPatchControlPointsEXT,
3646
74
                        vk::PFN_vkVoidFunction,
3647
74
                    >(Self::cmd_set_patch_control_points_ext)
3648
74
                },
3649
74
            },
3650
74
            VulkanCommand {
3651
74
                name: "vkCmdSetPerformanceMarkerINTEL",
3652
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3653
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPerformanceMarkerIntel),
3654
74
                proc: unsafe {
3655
74
                    std::mem::transmute::<
3656
74
                        vk::PFN_vkCmdSetPerformanceMarkerINTEL,
3657
74
                        vk::PFN_vkVoidFunction,
3658
74
                    >(Self::cmd_set_performance_marker_intel)
3659
74
                },
3660
74
            },
3661
74
            VulkanCommand {
3662
74
                name: "vkCmdSetPerformanceOverrideINTEL",
3663
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3664
74
                hooked: hooked_commands
3665
74
                    .contains(&LayerVulkanCommand::CmdSetPerformanceOverrideIntel),
3666
74
                proc: unsafe {
3667
74
                    std::mem::transmute::<
3668
74
                        vk::PFN_vkCmdSetPerformanceOverrideINTEL,
3669
74
                        vk::PFN_vkVoidFunction,
3670
74
                    >(Self::cmd_set_performance_override_intel)
3671
74
                },
3672
74
            },
3673
74
            VulkanCommand {
3674
74
                name: "vkCmdSetPerformanceStreamMarkerINTEL",
3675
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3676
74
                hooked: hooked_commands
3677
74
                    .contains(&LayerVulkanCommand::CmdSetPerformanceStreamMarkerIntel),
3678
74
                proc: unsafe {
3679
74
                    std::mem::transmute::<
3680
74
                        vk::PFN_vkCmdSetPerformanceStreamMarkerINTEL,
3681
74
                        vk::PFN_vkVoidFunction,
3682
74
                    >(Self::cmd_set_performance_stream_marker_intel)
3683
74
                },
3684
74
            },
3685
74
            VulkanCommand {
3686
74
                name: "vkCmdSetPolygonModeEXT",
3687
74
                features: smallvec![
3688
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3689
0
                    Feature::Extension(Extension::EXTShaderObject)
3690
                ],
3691
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPolygonModeExt),
3692
74
                proc: unsafe {
3693
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPolygonModeEXT, vk::PFN_vkVoidFunction>(
3694
74
                        Self::cmd_set_polygon_mode_ext,
3695
74
                    )
3696
74
                },
3697
74
            },
3698
74
            VulkanCommand {
3699
74
                name: "vkCmdSetPrimitiveRestartEnable",
3700
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3701
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3702
74
                proc: unsafe {
3703
74
                    std::mem::transmute::<
3704
74
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3705
74
                        vk::PFN_vkVoidFunction,
3706
74
                    >(Self::cmd_set_primitive_restart_enable)
3707
74
                },
3708
74
            },
3709
74
            VulkanCommand {
3710
74
                name: "vkCmdSetPrimitiveRestartEnableEXT",
3711
74
                features: smallvec![
3712
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3713
0
                    Feature::Extension(Extension::EXTShaderObject)
3714
                ],
3715
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3716
74
                proc: unsafe {
3717
74
                    std::mem::transmute::<
3718
74
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3719
74
                        vk::PFN_vkVoidFunction,
3720
74
                    >(Self::cmd_set_primitive_restart_enable)
3721
74
                },
3722
74
            },
3723
74
            VulkanCommand {
3724
74
                name: "vkCmdSetPrimitiveTopology",
3725
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3726
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3727
74
                proc: unsafe {
3728
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3729
74
                        Self::cmd_set_primitive_topology,
3730
74
                    )
3731
74
                },
3732
74
            },
3733
74
            VulkanCommand {
3734
74
                name: "vkCmdSetPrimitiveTopologyEXT",
3735
74
                features: smallvec![
3736
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3737
0
                    Feature::Extension(Extension::EXTShaderObject)
3738
                ],
3739
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3740
74
                proc: unsafe {
3741
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3742
74
                        Self::cmd_set_primitive_topology,
3743
74
                    )
3744
74
                },
3745
74
            },
3746
74
            VulkanCommand {
3747
74
                name: "vkCmdSetProvokingVertexModeEXT",
3748
74
                features: smallvec![
3749
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3750
0
                    Feature::Extension(Extension::EXTShaderObject)
3751
                ],
3752
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetProvokingVertexModeExt),
3753
74
                proc: unsafe {
3754
74
                    std::mem::transmute::<
3755
74
                        vk::PFN_vkCmdSetProvokingVertexModeEXT,
3756
74
                        vk::PFN_vkVoidFunction,
3757
74
                    >(Self::cmd_set_provoking_vertex_mode_ext)
3758
74
                },
3759
74
            },
3760
74
            VulkanCommand {
3761
74
                name: "vkCmdSetRasterizationSamplesEXT",
3762
74
                features: smallvec![
3763
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3764
0
                    Feature::Extension(Extension::EXTShaderObject)
3765
                ],
3766
74
                hooked: hooked_commands
3767
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizationSamplesExt),
3768
74
                proc: unsafe {
3769
74
                    std::mem::transmute::<
3770
74
                        vk::PFN_vkCmdSetRasterizationSamplesEXT,
3771
74
                        vk::PFN_vkVoidFunction,
3772
74
                    >(Self::cmd_set_rasterization_samples_ext)
3773
74
                },
3774
74
            },
3775
74
            VulkanCommand {
3776
74
                name: "vkCmdSetRasterizationStreamEXT",
3777
74
                features: smallvec![
3778
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3779
0
                    Feature::Extension(Extension::EXTShaderObject)
3780
                ],
3781
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetRasterizationStreamExt),
3782
74
                proc: unsafe {
3783
74
                    std::mem::transmute::<
3784
74
                        vk::PFN_vkCmdSetRasterizationStreamEXT,
3785
74
                        vk::PFN_vkVoidFunction,
3786
74
                    >(Self::cmd_set_rasterization_stream_ext)
3787
74
                },
3788
74
            },
3789
74
            VulkanCommand {
3790
74
                name: "vkCmdSetRasterizerDiscardEnable",
3791
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3792
74
                hooked: hooked_commands
3793
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3794
74
                proc: unsafe {
3795
74
                    std::mem::transmute::<
3796
74
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3797
74
                        vk::PFN_vkVoidFunction,
3798
74
                    >(Self::cmd_set_rasterizer_discard_enable)
3799
74
                },
3800
74
            },
3801
74
            VulkanCommand {
3802
74
                name: "vkCmdSetRasterizerDiscardEnableEXT",
3803
74
                features: smallvec![
3804
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3805
0
                    Feature::Extension(Extension::EXTShaderObject)
3806
                ],
3807
74
                hooked: hooked_commands
3808
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3809
74
                proc: unsafe {
3810
74
                    std::mem::transmute::<
3811
74
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3812
74
                        vk::PFN_vkVoidFunction,
3813
74
                    >(Self::cmd_set_rasterizer_discard_enable)
3814
74
                },
3815
74
            },
3816
74
            VulkanCommand {
3817
74
                name: "vkCmdSetRayTracingPipelineStackSizeKHR",
3818
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
3819
74
                hooked: hooked_commands
3820
74
                    .contains(&LayerVulkanCommand::CmdSetRayTracingPipelineStackSizeKhr),
3821
74
                proc: unsafe {
3822
74
                    std::mem::transmute::<
3823
74
                        vk::PFN_vkCmdSetRayTracingPipelineStackSizeKHR,
3824
74
                        vk::PFN_vkVoidFunction,
3825
74
                    >(Self::cmd_set_ray_tracing_pipeline_stack_size_khr)
3826
74
                },
3827
74
            },
3828
74
            VulkanCommand {
3829
74
                name: "vkCmdSetRepresentativeFragmentTestEnableNV",
3830
74
                features: smallvec![
3831
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3832
0
                    Feature::Extension(Extension::EXTShaderObject)
3833
                ],
3834
74
                hooked: hooked_commands
3835
74
                    .contains(&LayerVulkanCommand::CmdSetRepresentativeFragmentTestEnableNv),
3836
74
                proc: unsafe {
3837
74
                    std::mem::transmute::<
3838
74
                        vk::PFN_vkCmdSetRepresentativeFragmentTestEnableNV,
3839
74
                        vk::PFN_vkVoidFunction,
3840
74
                    >(Self::cmd_set_representative_fragment_test_enable_nv)
3841
74
                },
3842
74
            },
3843
74
            VulkanCommand {
3844
74
                name: "vkCmdSetSampleLocationsEXT",
3845
74
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
3846
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleLocationsExt),
3847
74
                proc: unsafe {
3848
74
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleLocationsEXT, vk::PFN_vkVoidFunction>(
3849
74
                        Self::cmd_set_sample_locations_ext,
3850
74
                    )
3851
74
                },
3852
74
            },
3853
74
            VulkanCommand {
3854
74
                name: "vkCmdSetSampleLocationsEnableEXT",
3855
74
                features: smallvec![
3856
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3857
0
                    Feature::Extension(Extension::EXTShaderObject)
3858
                ],
3859
74
                hooked: hooked_commands
3860
74
                    .contains(&LayerVulkanCommand::CmdSetSampleLocationsEnableExt),
3861
74
                proc: unsafe {
3862
74
                    std::mem::transmute::<
3863
74
                        vk::PFN_vkCmdSetSampleLocationsEnableEXT,
3864
74
                        vk::PFN_vkVoidFunction,
3865
74
                    >(Self::cmd_set_sample_locations_enable_ext)
3866
74
                },
3867
74
            },
3868
74
            VulkanCommand {
3869
74
                name: "vkCmdSetSampleMaskEXT",
3870
74
                features: smallvec![
3871
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3872
0
                    Feature::Extension(Extension::EXTShaderObject)
3873
                ],
3874
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleMaskExt),
3875
74
                proc: unsafe {
3876
74
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleMaskEXT, vk::PFN_vkVoidFunction>(
3877
74
                        Self::cmd_set_sample_mask_ext,
3878
74
                    )
3879
74
                },
3880
74
            },
3881
74
            VulkanCommand {
3882
74
                name: "vkCmdSetScissor",
3883
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3884
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissor),
3885
74
                proc: unsafe {
3886
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissor, vk::PFN_vkVoidFunction>(
3887
74
                        Self::cmd_set_scissor,
3888
74
                    )
3889
74
                },
3890
74
            },
3891
74
            VulkanCommand {
3892
74
                name: "vkCmdSetScissorWithCount",
3893
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3894
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3895
74
                proc: unsafe {
3896
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3897
74
                        Self::cmd_set_scissor_with_count,
3898
74
                    )
3899
74
                },
3900
74
            },
3901
74
            VulkanCommand {
3902
74
                name: "vkCmdSetScissorWithCountEXT",
3903
74
                features: smallvec![
3904
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3905
0
                    Feature::Extension(Extension::EXTShaderObject)
3906
                ],
3907
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3908
74
                proc: unsafe {
3909
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3910
74
                        Self::cmd_set_scissor_with_count,
3911
74
                    )
3912
74
                },
3913
74
            },
3914
74
            VulkanCommand {
3915
74
                name: "vkCmdSetShadingRateImageEnableNV",
3916
74
                features: smallvec![
3917
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3918
0
                    Feature::Extension(Extension::EXTShaderObject)
3919
                ],
3920
74
                hooked: hooked_commands
3921
74
                    .contains(&LayerVulkanCommand::CmdSetShadingRateImageEnableNv),
3922
74
                proc: unsafe {
3923
74
                    std::mem::transmute::<
3924
74
                        vk::PFN_vkCmdSetShadingRateImageEnableNV,
3925
74
                        vk::PFN_vkVoidFunction,
3926
74
                    >(Self::cmd_set_shading_rate_image_enable_nv)
3927
74
                },
3928
74
            },
3929
74
            VulkanCommand {
3930
74
                name: "vkCmdSetStencilCompareMask",
3931
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3932
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilCompareMask),
3933
74
                proc: unsafe {
3934
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilCompareMask, vk::PFN_vkVoidFunction>(
3935
74
                        Self::cmd_set_stencil_compare_mask,
3936
74
                    )
3937
74
                },
3938
74
            },
3939
74
            VulkanCommand {
3940
74
                name: "vkCmdSetStencilOp",
3941
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3942
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3943
74
                proc: unsafe {
3944
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3945
74
                        Self::cmd_set_stencil_op,
3946
74
                    )
3947
74
                },
3948
74
            },
3949
74
            VulkanCommand {
3950
74
                name: "vkCmdSetStencilOpEXT",
3951
74
                features: smallvec![
3952
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3953
0
                    Feature::Extension(Extension::EXTShaderObject)
3954
                ],
3955
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3956
74
                proc: unsafe {
3957
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3958
74
                        Self::cmd_set_stencil_op,
3959
74
                    )
3960
74
                },
3961
74
            },
3962
74
            VulkanCommand {
3963
74
                name: "vkCmdSetStencilReference",
3964
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3965
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilReference),
3966
74
                proc: unsafe {
3967
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilReference, vk::PFN_vkVoidFunction>(
3968
74
                        Self::cmd_set_stencil_reference,
3969
74
                    )
3970
74
                },
3971
74
            },
3972
74
            VulkanCommand {
3973
74
                name: "vkCmdSetStencilTestEnable",
3974
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3975
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3976
74
                proc: unsafe {
3977
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
3978
74
                        Self::cmd_set_stencil_test_enable,
3979
74
                    )
3980
74
                },
3981
74
            },
3982
74
            VulkanCommand {
3983
74
                name: "vkCmdSetStencilTestEnableEXT",
3984
74
                features: smallvec![
3985
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3986
0
                    Feature::Extension(Extension::EXTShaderObject)
3987
                ],
3988
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3989
74
                proc: unsafe {
3990
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
3991
74
                        Self::cmd_set_stencil_test_enable,
3992
74
                    )
3993
74
                },
3994
74
            },
3995
74
            VulkanCommand {
3996
74
                name: "vkCmdSetStencilWriteMask",
3997
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3998
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilWriteMask),
3999
74
                proc: unsafe {
4000
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilWriteMask, vk::PFN_vkVoidFunction>(
4001
74
                        Self::cmd_set_stencil_write_mask,
4002
74
                    )
4003
74
                },
4004
74
            },
4005
74
            VulkanCommand {
4006
74
                name: "vkCmdSetTessellationDomainOriginEXT",
4007
74
                features: smallvec![
4008
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4009
0
                    Feature::Extension(Extension::EXTShaderObject)
4010
                ],
4011
74
                hooked: hooked_commands
4012
74
                    .contains(&LayerVulkanCommand::CmdSetTessellationDomainOriginExt),
4013
74
                proc: unsafe {
4014
74
                    std::mem::transmute::<
4015
74
                        vk::PFN_vkCmdSetTessellationDomainOriginEXT,
4016
74
                        vk::PFN_vkVoidFunction,
4017
74
                    >(Self::cmd_set_tessellation_domain_origin_ext)
4018
74
                },
4019
74
            },
4020
74
            VulkanCommand {
4021
74
                name: "vkCmdSetVertexInputEXT",
4022
74
                features: smallvec![
4023
0
                    Feature::Extension(Extension::EXTVertexInputDynamicState),
4024
0
                    Feature::Extension(Extension::EXTShaderObject)
4025
                ],
4026
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetVertexInputExt),
4027
74
                proc: unsafe {
4028
74
                    std::mem::transmute::<vk::PFN_vkCmdSetVertexInputEXT, vk::PFN_vkVoidFunction>(
4029
74
                        Self::cmd_set_vertex_input_ext,
4030
74
                    )
4031
74
                },
4032
74
            },
4033
74
            VulkanCommand {
4034
74
                name: "vkCmdSetViewport",
4035
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4036
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewport),
4037
74
                proc: unsafe {
4038
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewport, vk::PFN_vkVoidFunction>(
4039
74
                        Self::cmd_set_viewport,
4040
74
                    )
4041
74
                },
4042
74
            },
4043
74
            VulkanCommand {
4044
74
                name: "vkCmdSetViewportShadingRatePaletteNV",
4045
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
4046
74
                hooked: hooked_commands
4047
74
                    .contains(&LayerVulkanCommand::CmdSetViewportShadingRatePaletteNv),
4048
74
                proc: unsafe {
4049
74
                    std::mem::transmute::<
4050
74
                        vk::PFN_vkCmdSetViewportShadingRatePaletteNV,
4051
74
                        vk::PFN_vkVoidFunction,
4052
74
                    >(Self::cmd_set_viewport_shading_rate_palette_nv)
4053
74
                },
4054
74
            },
4055
74
            VulkanCommand {
4056
74
                name: "vkCmdSetViewportSwizzleNV",
4057
74
                features: smallvec![
4058
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4059
0
                    Feature::Extension(Extension::EXTShaderObject)
4060
                ],
4061
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportSwizzleNv),
4062
74
                proc: unsafe {
4063
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportSwizzleNV, vk::PFN_vkVoidFunction>(
4064
74
                        Self::cmd_set_viewport_swizzle_nv,
4065
74
                    )
4066
74
                },
4067
74
            },
4068
74
            VulkanCommand {
4069
74
                name: "vkCmdSetViewportWScalingEnableNV",
4070
74
                features: smallvec![
4071
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4072
0
                    Feature::Extension(Extension::EXTShaderObject)
4073
                ],
4074
74
                hooked: hooked_commands
4075
74
                    .contains(&LayerVulkanCommand::CmdSetViewportWScalingEnableNv),
4076
74
                proc: unsafe {
4077
74
                    std::mem::transmute::<
4078
74
                        vk::PFN_vkCmdSetViewportWScalingEnableNV,
4079
74
                        vk::PFN_vkVoidFunction,
4080
74
                    >(Self::cmd_set_viewport_w_scaling_enable_nv)
4081
74
                },
4082
74
            },
4083
74
            VulkanCommand {
4084
74
                name: "vkCmdSetViewportWScalingNV",
4085
74
                features: smallvec![
Feature::Extension(Extension::NVClipSpaceWScaling)0
],
4086
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWScalingNv),
4087
74
                proc: unsafe {
4088
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWScalingNV, vk::PFN_vkVoidFunction>(
4089
74
                        Self::cmd_set_viewport_w_scaling_nv,
4090
74
                    )
4091
74
                },
4092
74
            },
4093
74
            VulkanCommand {
4094
74
                name: "vkCmdSetViewportWithCount",
4095
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4096
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4097
74
                proc: unsafe {
4098
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4099
74
                        Self::cmd_set_viewport_with_count,
4100
74
                    )
4101
74
                },
4102
74
            },
4103
74
            VulkanCommand {
4104
74
                name: "vkCmdSetViewportWithCountEXT",
4105
74
                features: smallvec![
4106
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
4107
0
                    Feature::Extension(Extension::EXTShaderObject)
4108
                ],
4109
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4110
74
                proc: unsafe {
4111
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4112
74
                        Self::cmd_set_viewport_with_count,
4113
74
                    )
4114
74
                },
4115
74
            },
4116
74
            VulkanCommand {
4117
74
                name: "vkCmdSubpassShadingHUAWEI",
4118
74
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
4119
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSubpassShadingHuawei),
4120
74
                proc: unsafe {
4121
74
                    std::mem::transmute::<vk::PFN_vkCmdSubpassShadingHUAWEI, vk::PFN_vkVoidFunction>(
4122
74
                        Self::cmd_subpass_shading_huawei,
4123
74
                    )
4124
74
                },
4125
74
            },
4126
74
            VulkanCommand {
4127
74
                name: "vkCmdTraceRaysIndirect2KHR",
4128
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingMaintenance1)0
],
4129
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirect2Khr),
4130
74
                proc: unsafe {
4131
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirect2KHR, vk::PFN_vkVoidFunction>(
4132
74
                        Self::cmd_trace_rays_indirect2_khr,
4133
74
                    )
4134
74
                },
4135
74
            },
4136
74
            VulkanCommand {
4137
74
                name: "vkCmdTraceRaysIndirectKHR",
4138
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4139
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirectKhr),
4140
74
                proc: unsafe {
4141
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirectKHR, vk::PFN_vkVoidFunction>(
4142
74
                        Self::cmd_trace_rays_indirect_khr,
4143
74
                    )
4144
74
                },
4145
74
            },
4146
74
            VulkanCommand {
4147
74
                name: "vkCmdTraceRaysKHR",
4148
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4149
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysKhr),
4150
74
                proc: unsafe {
4151
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysKHR, vk::PFN_vkVoidFunction>(
4152
74
                        Self::cmd_trace_rays_khr,
4153
74
                    )
4154
74
                },
4155
74
            },
4156
74
            VulkanCommand {
4157
74
                name: "vkCmdTraceRaysNV",
4158
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4159
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysNv),
4160
74
                proc: unsafe {
4161
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysNV, vk::PFN_vkVoidFunction>(
4162
74
                        Self::cmd_trace_rays_nv,
4163
74
                    )
4164
74
                },
4165
74
            },
4166
74
            VulkanCommand {
4167
74
                name: "vkCmdUpdateBuffer",
4168
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4169
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdUpdateBuffer),
4170
74
                proc: unsafe {
4171
74
                    std::mem::transmute::<vk::PFN_vkCmdUpdateBuffer, vk::PFN_vkVoidFunction>(
4172
74
                        Self::cmd_update_buffer,
4173
74
                    )
4174
74
                },
4175
74
            },
4176
74
            VulkanCommand {
4177
74
                name: "vkCmdWaitEvents",
4178
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4179
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents),
4180
74
                proc: unsafe {
4181
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents, vk::PFN_vkVoidFunction>(
4182
74
                        Self::cmd_wait_events,
4183
74
                    )
4184
74
                },
4185
74
            },
4186
74
            VulkanCommand {
4187
74
                name: "vkCmdWaitEvents2",
4188
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4189
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4190
74
                proc: unsafe {
4191
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4192
74
                        Self::cmd_wait_events2,
4193
74
                    )
4194
74
                },
4195
74
            },
4196
74
            VulkanCommand {
4197
74
                name: "vkCmdWaitEvents2KHR",
4198
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4199
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4200
74
                proc: unsafe {
4201
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4202
74
                        Self::cmd_wait_events2,
4203
74
                    )
4204
74
                },
4205
74
            },
4206
74
            VulkanCommand {
4207
74
                name: "vkCmdWriteAccelerationStructuresPropertiesKHR",
4208
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4209
74
                hooked: hooked_commands
4210
74
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesKhr),
4211
74
                proc: unsafe {
4212
74
                    std::mem::transmute::<
4213
74
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesKHR,
4214
74
                        vk::PFN_vkVoidFunction,
4215
74
                    >(Self::cmd_write_acceleration_structures_properties_khr)
4216
74
                },
4217
74
            },
4218
74
            VulkanCommand {
4219
74
                name: "vkCmdWriteAccelerationStructuresPropertiesNV",
4220
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4221
74
                hooked: hooked_commands
4222
74
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesNv),
4223
74
                proc: unsafe {
4224
74
                    std::mem::transmute::<
4225
74
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesNV,
4226
74
                        vk::PFN_vkVoidFunction,
4227
74
                    >(Self::cmd_write_acceleration_structures_properties_nv)
4228
74
                },
4229
74
            },
4230
74
            VulkanCommand {
4231
74
                name: "vkCmdWriteBufferMarker2AMD",
4232
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4233
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarker2Amd),
4234
74
                proc: unsafe {
4235
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarker2AMD, vk::PFN_vkVoidFunction>(
4236
74
                        Self::cmd_write_buffer_marker2_amd,
4237
74
                    )
4238
74
                },
4239
74
            },
4240
74
            VulkanCommand {
4241
74
                name: "vkCmdWriteBufferMarkerAMD",
4242
74
                features: smallvec![
Feature::Extension(Extension::AMDBufferMarker)0
],
4243
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarkerAmd),
4244
74
                proc: unsafe {
4245
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarkerAMD, vk::PFN_vkVoidFunction>(
4246
74
                        Self::cmd_write_buffer_marker_amd,
4247
74
                    )
4248
74
                },
4249
74
            },
4250
74
            VulkanCommand {
4251
74
                name: "vkCmdWriteMicromapsPropertiesEXT",
4252
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4253
74
                hooked: hooked_commands
4254
74
                    .contains(&LayerVulkanCommand::CmdWriteMicromapsPropertiesExt),
4255
74
                proc: unsafe {
4256
74
                    std::mem::transmute::<
4257
74
                        vk::PFN_vkCmdWriteMicromapsPropertiesEXT,
4258
74
                        vk::PFN_vkVoidFunction,
4259
74
                    >(Self::cmd_write_micromaps_properties_ext)
4260
74
                },
4261
74
            },
4262
74
            VulkanCommand {
4263
74
                name: "vkCmdWriteTimestamp",
4264
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4265
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp),
4266
74
                proc: unsafe {
4267
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp, vk::PFN_vkVoidFunction>(
4268
74
                        Self::cmd_write_timestamp,
4269
74
                    )
4270
74
                },
4271
74
            },
4272
74
            VulkanCommand {
4273
74
                name: "vkCmdWriteTimestamp2",
4274
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4275
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4276
74
                proc: unsafe {
4277
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4278
74
                        Self::cmd_write_timestamp2,
4279
74
                    )
4280
74
                },
4281
74
            },
4282
74
            VulkanCommand {
4283
74
                name: "vkCmdWriteTimestamp2KHR",
4284
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4285
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4286
74
                proc: unsafe {
4287
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4288
74
                        Self::cmd_write_timestamp2,
4289
74
                    )
4290
74
                },
4291
74
            },
4292
74
            VulkanCommand {
4293
74
                name: "vkCompileDeferredNV",
4294
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4295
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CompileDeferredNv),
4296
74
                proc: unsafe {
4297
74
                    std::mem::transmute::<vk::PFN_vkCompileDeferredNV, vk::PFN_vkVoidFunction>(
4298
74
                        Self::compile_deferred_nv,
4299
74
                    )
4300
74
                },
4301
74
            },
4302
74
            VulkanCommand {
4303
74
                name: "vkCopyAccelerationStructureKHR",
4304
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4305
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyAccelerationStructureKhr),
4306
74
                proc: unsafe {
4307
74
                    std::mem::transmute::<
4308
74
                        vk::PFN_vkCopyAccelerationStructureKHR,
4309
74
                        vk::PFN_vkVoidFunction,
4310
74
                    >(Self::copy_acceleration_structure_khr)
4311
74
                },
4312
74
            },
4313
74
            VulkanCommand {
4314
74
                name: "vkCopyAccelerationStructureToMemoryKHR",
4315
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4316
74
                hooked: hooked_commands
4317
74
                    .contains(&LayerVulkanCommand::CopyAccelerationStructureToMemoryKhr),
4318
74
                proc: unsafe {
4319
74
                    std::mem::transmute::<
4320
74
                        vk::PFN_vkCopyAccelerationStructureToMemoryKHR,
4321
74
                        vk::PFN_vkVoidFunction,
4322
74
                    >(Self::copy_acceleration_structure_to_memory_khr)
4323
74
                },
4324
74
            },
4325
74
            VulkanCommand {
4326
74
                name: "vkCopyMemoryToAccelerationStructureKHR",
4327
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4328
74
                hooked: hooked_commands
4329
74
                    .contains(&LayerVulkanCommand::CopyMemoryToAccelerationStructureKhr),
4330
74
                proc: unsafe {
4331
74
                    std::mem::transmute::<
4332
74
                        vk::PFN_vkCopyMemoryToAccelerationStructureKHR,
4333
74
                        vk::PFN_vkVoidFunction,
4334
74
                    >(Self::copy_memory_to_acceleration_structure_khr)
4335
74
                },
4336
74
            },
4337
74
            VulkanCommand {
4338
74
                name: "vkCopyMemoryToMicromapEXT",
4339
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4340
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMemoryToMicromapExt),
4341
74
                proc: unsafe {
4342
74
                    std::mem::transmute::<vk::PFN_vkCopyMemoryToMicromapEXT, vk::PFN_vkVoidFunction>(
4343
74
                        Self::copy_memory_to_micromap_ext,
4344
74
                    )
4345
74
                },
4346
74
            },
4347
74
            VulkanCommand {
4348
74
                name: "vkCopyMicromapEXT",
4349
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4350
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapExt),
4351
74
                proc: unsafe {
4352
74
                    std::mem::transmute::<vk::PFN_vkCopyMicromapEXT, vk::PFN_vkVoidFunction>(
4353
74
                        Self::copy_micromap_ext,
4354
74
                    )
4355
74
                },
4356
74
            },
4357
74
            VulkanCommand {
4358
74
                name: "vkCopyMicromapToMemoryEXT",
4359
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4360
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapToMemoryExt),
4361
74
                proc: unsafe {
4362
74
                    std::mem::transmute::<vk::PFN_vkCopyMicromapToMemoryEXT, vk::PFN_vkVoidFunction>(
4363
74
                        Self::copy_micromap_to_memory_ext,
4364
74
                    )
4365
74
                },
4366
74
            },
4367
74
            VulkanCommand {
4368
74
                name: "vkCreateAccelerationStructureKHR",
4369
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4370
74
                hooked: hooked_commands
4371
74
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureKhr),
4372
74
                proc: unsafe {
4373
74
                    std::mem::transmute::<
4374
74
                        vk::PFN_vkCreateAccelerationStructureKHR,
4375
74
                        vk::PFN_vkVoidFunction,
4376
74
                    >(Self::create_acceleration_structure_khr)
4377
74
                },
4378
74
            },
4379
74
            VulkanCommand {
4380
74
                name: "vkCreateAccelerationStructureNV",
4381
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4382
74
                hooked: hooked_commands
4383
74
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureNv),
4384
74
                proc: unsafe {
4385
74
                    std::mem::transmute::<
4386
74
                        vk::PFN_vkCreateAccelerationStructureNV,
4387
74
                        vk::PFN_vkVoidFunction,
4388
74
                    >(Self::create_acceleration_structure_nv)
4389
74
                },
4390
74
            },
4391
74
            VulkanCommand {
4392
74
                name: "vkCreateBuffer",
4393
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4394
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBuffer),
4395
74
                proc: unsafe {
4396
74
                    std::mem::transmute::<vk::PFN_vkCreateBuffer, vk::PFN_vkVoidFunction>(
4397
74
                        Self::create_buffer,
4398
74
                    )
4399
74
                },
4400
74
            },
4401
74
            VulkanCommand {
4402
74
                name: "vkCreateBufferCollectionFUCHSIA",
4403
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4404
74
                hooked: hooked_commands
4405
74
                    .contains(&LayerVulkanCommand::CreateBufferCollectionFuchsia),
4406
74
                proc: unsafe {
4407
74
                    std::mem::transmute::<
4408
74
                        vk::PFN_vkCreateBufferCollectionFUCHSIA,
4409
74
                        vk::PFN_vkVoidFunction,
4410
74
                    >(Self::create_buffer_collection_fuchsia)
4411
74
                },
4412
74
            },
4413
74
            VulkanCommand {
4414
74
                name: "vkCreateBufferView",
4415
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4416
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBufferView),
4417
74
                proc: unsafe {
4418
74
                    std::mem::transmute::<vk::PFN_vkCreateBufferView, vk::PFN_vkVoidFunction>(
4419
74
                        Self::create_buffer_view,
4420
74
                    )
4421
74
                },
4422
74
            },
4423
74
            VulkanCommand {
4424
74
                name: "vkCreateCommandPool",
4425
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4426
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCommandPool),
4427
74
                proc: unsafe {
4428
74
                    std::mem::transmute::<vk::PFN_vkCreateCommandPool, vk::PFN_vkVoidFunction>(
4429
74
                        Self::create_command_pool,
4430
74
                    )
4431
74
                },
4432
74
            },
4433
74
            VulkanCommand {
4434
74
                name: "vkCreateComputePipelines",
4435
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4436
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateComputePipelines),
4437
74
                proc: unsafe {
4438
74
                    std::mem::transmute::<vk::PFN_vkCreateComputePipelines, vk::PFN_vkVoidFunction>(
4439
74
                        Self::create_compute_pipelines,
4440
74
                    )
4441
74
                },
4442
74
            },
4443
74
            VulkanCommand {
4444
74
                name: "vkCreateCuFunctionNVX",
4445
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4446
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuFunctionNvx),
4447
74
                proc: unsafe {
4448
74
                    std::mem::transmute::<vk::PFN_vkCreateCuFunctionNVX, vk::PFN_vkVoidFunction>(
4449
74
                        Self::create_cu_function_nvx,
4450
74
                    )
4451
74
                },
4452
74
            },
4453
74
            VulkanCommand {
4454
74
                name: "vkCreateCuModuleNVX",
4455
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4456
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuModuleNvx),
4457
74
                proc: unsafe {
4458
74
                    std::mem::transmute::<vk::PFN_vkCreateCuModuleNVX, vk::PFN_vkVoidFunction>(
4459
74
                        Self::create_cu_module_nvx,
4460
74
                    )
4461
74
                },
4462
74
            },
4463
74
            VulkanCommand {
4464
74
                name: "vkCreateDeferredOperationKHR",
4465
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4466
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDeferredOperationKhr),
4467
74
                proc: unsafe {
4468
74
                    std::mem::transmute::<
4469
74
                        vk::PFN_vkCreateDeferredOperationKHR,
4470
74
                        vk::PFN_vkVoidFunction,
4471
74
                    >(Self::create_deferred_operation_khr)
4472
74
                },
4473
74
            },
4474
74
            VulkanCommand {
4475
74
                name: "vkCreateDescriptorPool",
4476
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4477
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorPool),
4478
74
                proc: unsafe {
4479
74
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorPool, vk::PFN_vkVoidFunction>(
4480
74
                        Self::create_descriptor_pool,
4481
74
                    )
4482
74
                },
4483
74
            },
4484
74
            VulkanCommand {
4485
74
                name: "vkCreateDescriptorSetLayout",
4486
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4487
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorSetLayout),
4488
74
                proc: unsafe {
4489
74
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorSetLayout, vk::PFN_vkVoidFunction>(
4490
74
                        Self::create_descriptor_set_layout,
4491
74
                    )
4492
74
                },
4493
74
            },
4494
74
            VulkanCommand {
4495
74
                name: "vkCreateDescriptorUpdateTemplate",
4496
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4497
74
                hooked: hooked_commands
4498
74
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4499
74
                proc: unsafe {
4500
74
                    std::mem::transmute::<
4501
74
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4502
74
                        vk::PFN_vkVoidFunction,
4503
74
                    >(Self::create_descriptor_update_template)
4504
74
                },
4505
74
            },
4506
74
            VulkanCommand {
4507
74
                name: "vkCreateDescriptorUpdateTemplateKHR",
4508
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4509
74
                hooked: hooked_commands
4510
74
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4511
74
                proc: unsafe {
4512
74
                    std::mem::transmute::<
4513
74
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4514
74
                        vk::PFN_vkVoidFunction,
4515
74
                    >(Self::create_descriptor_update_template)
4516
74
                },
4517
74
            },
4518
74
            VulkanCommand {
4519
74
                name: "vkCreateEvent",
4520
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4521
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateEvent),
4522
74
                proc: unsafe {
4523
74
                    std::mem::transmute::<vk::PFN_vkCreateEvent, vk::PFN_vkVoidFunction>(
4524
74
                        Self::create_event,
4525
74
                    )
4526
74
                },
4527
74
            },
4528
74
            VulkanCommand {
4529
74
                name: "vkCreateFence",
4530
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4531
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFence),
4532
74
                proc: unsafe {
4533
74
                    std::mem::transmute::<vk::PFN_vkCreateFence, vk::PFN_vkVoidFunction>(
4534
74
                        Self::create_fence,
4535
74
                    )
4536
74
                },
4537
74
            },
4538
74
            VulkanCommand {
4539
74
                name: "vkCreateFramebuffer",
4540
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4541
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFramebuffer),
4542
74
                proc: unsafe {
4543
74
                    std::mem::transmute::<vk::PFN_vkCreateFramebuffer, vk::PFN_vkVoidFunction>(
4544
74
                        Self::create_framebuffer,
4545
74
                    )
4546
74
                },
4547
74
            },
4548
74
            VulkanCommand {
4549
74
                name: "vkCreateGraphicsPipelines",
4550
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4551
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateGraphicsPipelines),
4552
74
                proc: unsafe {
4553
74
                    std::mem::transmute::<vk::PFN_vkCreateGraphicsPipelines, vk::PFN_vkVoidFunction>(
4554
74
                        Self::create_graphics_pipelines,
4555
74
                    )
4556
74
                },
4557
74
            },
4558
74
            VulkanCommand {
4559
74
                name: "vkCreateImage",
4560
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4561
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImage),
4562
74
                proc: unsafe {
4563
74
                    std::mem::transmute::<vk::PFN_vkCreateImage, vk::PFN_vkVoidFunction>(
4564
74
                        Self::create_image,
4565
74
                    )
4566
74
                },
4567
74
            },
4568
74
            VulkanCommand {
4569
74
                name: "vkCreateImageView",
4570
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4571
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImageView),
4572
74
                proc: unsafe {
4573
74
                    std::mem::transmute::<vk::PFN_vkCreateImageView, vk::PFN_vkVoidFunction>(
4574
74
                        Self::create_image_view,
4575
74
                    )
4576
74
                },
4577
74
            },
4578
74
            VulkanCommand {
4579
74
                name: "vkCreateIndirectCommandsLayoutNV",
4580
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
4581
74
                hooked: hooked_commands
4582
74
                    .contains(&LayerVulkanCommand::CreateIndirectCommandsLayoutNv),
4583
74
                proc: unsafe {
4584
74
                    std::mem::transmute::<
4585
74
                        vk::PFN_vkCreateIndirectCommandsLayoutNV,
4586
74
                        vk::PFN_vkVoidFunction,
4587
74
                    >(Self::create_indirect_commands_layout_nv)
4588
74
                },
4589
74
            },
4590
74
            VulkanCommand {
4591
74
                name: "vkCreateMicromapEXT",
4592
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4593
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMicromapExt),
4594
74
                proc: unsafe {
4595
74
                    std::mem::transmute::<vk::PFN_vkCreateMicromapEXT, vk::PFN_vkVoidFunction>(
4596
74
                        Self::create_micromap_ext,
4597
74
                    )
4598
74
                },
4599
74
            },
4600
74
            VulkanCommand {
4601
74
                name: "vkCreateOpticalFlowSessionNV",
4602
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
4603
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateOpticalFlowSessionNv),
4604
74
                proc: unsafe {
4605
74
                    std::mem::transmute::<
4606
74
                        vk::PFN_vkCreateOpticalFlowSessionNV,
4607
74
                        vk::PFN_vkVoidFunction,
4608
74
                    >(Self::create_optical_flow_session_nv)
4609
74
                },
4610
74
            },
4611
74
            VulkanCommand {
4612
74
                name: "vkCreatePipelineCache",
4613
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4614
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineCache),
4615
74
                proc: unsafe {
4616
74
                    std::mem::transmute::<vk::PFN_vkCreatePipelineCache, vk::PFN_vkVoidFunction>(
4617
74
                        Self::create_pipeline_cache,
4618
74
                    )
4619
74
                },
4620
74
            },
4621
74
            VulkanCommand {
4622
74
                name: "vkCreatePipelineLayout",
4623
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4624
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineLayout),
4625
74
                proc: unsafe {
4626
74
                    std::mem::transmute::<vk::PFN_vkCreatePipelineLayout, vk::PFN_vkVoidFunction>(
4627
74
                        Self::create_pipeline_layout,
4628
74
                    )
4629
74
                },
4630
74
            },
4631
74
            VulkanCommand {
4632
74
                name: "vkCreatePrivateDataSlot",
4633
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4634
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4635
74
                proc: unsafe {
4636
74
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4637
74
                        Self::create_private_data_slot,
4638
74
                    )
4639
74
                },
4640
74
            },
4641
74
            VulkanCommand {
4642
74
                name: "vkCreatePrivateDataSlotEXT",
4643
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
4644
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4645
74
                proc: unsafe {
4646
74
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4647
74
                        Self::create_private_data_slot,
4648
74
                    )
4649
74
                },
4650
74
            },
4651
74
            VulkanCommand {
4652
74
                name: "vkCreateQueryPool",
4653
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4654
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateQueryPool),
4655
74
                proc: unsafe {
4656
74
                    std::mem::transmute::<vk::PFN_vkCreateQueryPool, vk::PFN_vkVoidFunction>(
4657
74
                        Self::create_query_pool,
4658
74
                    )
4659
74
                },
4660
74
            },
4661
74
            VulkanCommand {
4662
74
                name: "vkCreateRayTracingPipelinesKHR",
4663
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4664
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesKhr),
4665
74
                proc: unsafe {
4666
74
                    std::mem::transmute::<
4667
74
                        vk::PFN_vkCreateRayTracingPipelinesKHR,
4668
74
                        vk::PFN_vkVoidFunction,
4669
74
                    >(Self::create_ray_tracing_pipelines_khr)
4670
74
                },
4671
74
            },
4672
74
            VulkanCommand {
4673
74
                name: "vkCreateRayTracingPipelinesNV",
4674
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4675
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesNv),
4676
74
                proc: unsafe {
4677
74
                    std::mem::transmute::<
4678
74
                        vk::PFN_vkCreateRayTracingPipelinesNV,
4679
74
                        vk::PFN_vkVoidFunction,
4680
74
                    >(Self::create_ray_tracing_pipelines_nv)
4681
74
                },
4682
74
            },
4683
74
            VulkanCommand {
4684
74
                name: "vkCreateRenderPass",
4685
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4686
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass),
4687
74
                proc: unsafe {
4688
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass, vk::PFN_vkVoidFunction>(
4689
74
                        Self::create_render_pass,
4690
74
                    )
4691
74
                },
4692
74
            },
4693
74
            VulkanCommand {
4694
74
                name: "vkCreateRenderPass2",
4695
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
4696
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4697
74
                proc: unsafe {
4698
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4699
74
                        Self::create_render_pass2,
4700
74
                    )
4701
74
                },
4702
74
            },
4703
74
            VulkanCommand {
4704
74
                name: "vkCreateRenderPass2KHR",
4705
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
4706
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4707
74
                proc: unsafe {
4708
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4709
74
                        Self::create_render_pass2,
4710
74
                    )
4711
74
                },
4712
74
            },
4713
74
            VulkanCommand {
4714
74
                name: "vkCreateSampler",
4715
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4716
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSampler),
4717
74
                proc: unsafe {
4718
74
                    std::mem::transmute::<vk::PFN_vkCreateSampler, vk::PFN_vkVoidFunction>(
4719
74
                        Self::create_sampler,
4720
74
                    )
4721
74
                },
4722
74
            },
4723
74
            VulkanCommand {
4724
74
                name: "vkCreateSamplerYcbcrConversion",
4725
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4726
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4727
74
                proc: unsafe {
4728
74
                    std::mem::transmute::<
4729
74
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4730
74
                        vk::PFN_vkVoidFunction,
4731
74
                    >(Self::create_sampler_ycbcr_conversion)
4732
74
                },
4733
74
            },
4734
74
            VulkanCommand {
4735
74
                name: "vkCreateSamplerYcbcrConversionKHR",
4736
74
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
4737
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4738
74
                proc: unsafe {
4739
74
                    std::mem::transmute::<
4740
74
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4741
74
                        vk::PFN_vkVoidFunction,
4742
74
                    >(Self::create_sampler_ycbcr_conversion)
4743
74
                },
4744
74
            },
4745
74
            VulkanCommand {
4746
74
                name: "vkCreateSemaphore",
4747
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4748
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSemaphore),
4749
74
                proc: unsafe {
4750
74
                    std::mem::transmute::<vk::PFN_vkCreateSemaphore, vk::PFN_vkVoidFunction>(
4751
74
                        Self::create_semaphore,
4752
74
                    )
4753
74
                },
4754
74
            },
4755
74
            VulkanCommand {
4756
74
                name: "vkCreateShaderModule",
4757
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4758
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateShaderModule),
4759
74
                proc: unsafe {
4760
74
                    std::mem::transmute::<vk::PFN_vkCreateShaderModule, vk::PFN_vkVoidFunction>(
4761
74
                        Self::create_shader_module,
4762
74
                    )
4763
74
                },
4764
74
            },
4765
74
            VulkanCommand {
4766
74
                name: "vkCreateSharedSwapchainsKHR",
4767
74
                features: smallvec![
Feature::Extension(Extension::KHRDisplaySwapchain)0
],
4768
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSharedSwapchainsKhr),
4769
74
                proc: unsafe {
4770
74
                    std::mem::transmute::<vk::PFN_vkCreateSharedSwapchainsKHR, vk::PFN_vkVoidFunction>(
4771
74
                        Self::create_shared_swapchains_khr,
4772
74
                    )
4773
74
                },
4774
74
            },
4775
74
            VulkanCommand {
4776
74
                name: "vkCreateSwapchainKHR",
4777
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
4778
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSwapchainKhr),
4779
74
                proc: unsafe {
4780
74
                    std::mem::transmute::<vk::PFN_vkCreateSwapchainKHR, vk::PFN_vkVoidFunction>(
4781
74
                        Self::create_swapchain_khr,
4782
74
                    )
4783
74
                },
4784
74
            },
4785
74
            VulkanCommand {
4786
74
                name: "vkCreateValidationCacheEXT",
4787
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
4788
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateValidationCacheExt),
4789
74
                proc: unsafe {
4790
74
                    std::mem::transmute::<vk::PFN_vkCreateValidationCacheEXT, vk::PFN_vkVoidFunction>(
4791
74
                        Self::create_validation_cache_ext,
4792
74
                    )
4793
74
                },
4794
74
            },
4795
74
            VulkanCommand {
4796
74
                name: "vkCreateVideoSessionKHR",
4797
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4798
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateVideoSessionKhr),
4799
74
                proc: unsafe {
4800
74
                    std::mem::transmute::<vk::PFN_vkCreateVideoSessionKHR, vk::PFN_vkVoidFunction>(
4801
74
                        Self::create_video_session_khr,
4802
74
                    )
4803
74
                },
4804
74
            },
4805
74
            VulkanCommand {
4806
74
                name: "vkCreateVideoSessionParametersKHR",
4807
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4808
74
                hooked: hooked_commands
4809
74
                    .contains(&LayerVulkanCommand::CreateVideoSessionParametersKhr),
4810
74
                proc: unsafe {
4811
74
                    std::mem::transmute::<
4812
74
                        vk::PFN_vkCreateVideoSessionParametersKHR,
4813
74
                        vk::PFN_vkVoidFunction,
4814
74
                    >(Self::create_video_session_parameters_khr)
4815
74
                },
4816
74
            },
4817
74
            VulkanCommand {
4818
74
                name: "vkDebugMarkerSetObjectNameEXT",
4819
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4820
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectNameExt),
4821
74
                proc: unsafe {
4822
74
                    std::mem::transmute::<
4823
74
                        vk::PFN_vkDebugMarkerSetObjectNameEXT,
4824
74
                        vk::PFN_vkVoidFunction,
4825
74
                    >(Self::debug_marker_set_object_name_ext)
4826
74
                },
4827
74
            },
4828
74
            VulkanCommand {
4829
74
                name: "vkDebugMarkerSetObjectTagEXT",
4830
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4831
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectTagExt),
4832
74
                proc: unsafe {
4833
74
                    std::mem::transmute::<
4834
74
                        vk::PFN_vkDebugMarkerSetObjectTagEXT,
4835
74
                        vk::PFN_vkVoidFunction,
4836
74
                    >(Self::debug_marker_set_object_tag_ext)
4837
74
                },
4838
74
            },
4839
74
            VulkanCommand {
4840
74
                name: "vkDeferredOperationJoinKHR",
4841
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4842
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeferredOperationJoinKhr),
4843
74
                proc: unsafe {
4844
74
                    std::mem::transmute::<vk::PFN_vkDeferredOperationJoinKHR, vk::PFN_vkVoidFunction>(
4845
74
                        Self::deferred_operation_join_khr,
4846
74
                    )
4847
74
                },
4848
74
            },
4849
74
            VulkanCommand {
4850
74
                name: "vkDestroyAccelerationStructureKHR",
4851
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4852
74
                hooked: hooked_commands
4853
74
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureKhr),
4854
74
                proc: unsafe {
4855
74
                    std::mem::transmute::<
4856
74
                        vk::PFN_vkDestroyAccelerationStructureKHR,
4857
74
                        vk::PFN_vkVoidFunction,
4858
74
                    >(Self::destroy_acceleration_structure_khr)
4859
74
                },
4860
74
            },
4861
74
            VulkanCommand {
4862
74
                name: "vkDestroyAccelerationStructureNV",
4863
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4864
74
                hooked: hooked_commands
4865
74
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureNv),
4866
74
                proc: unsafe {
4867
74
                    std::mem::transmute::<
4868
74
                        vk::PFN_vkDestroyAccelerationStructureNV,
4869
74
                        vk::PFN_vkVoidFunction,
4870
74
                    >(Self::destroy_acceleration_structure_nv)
4871
74
                },
4872
74
            },
4873
74
            VulkanCommand {
4874
74
                name: "vkDestroyBuffer",
4875
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4876
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBuffer),
4877
74
                proc: unsafe {
4878
74
                    std::mem::transmute::<vk::PFN_vkDestroyBuffer, vk::PFN_vkVoidFunction>(
4879
74
                        Self::destroy_buffer,
4880
74
                    )
4881
74
                },
4882
74
            },
4883
74
            VulkanCommand {
4884
74
                name: "vkDestroyBufferCollectionFUCHSIA",
4885
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4886
74
                hooked: hooked_commands
4887
74
                    .contains(&LayerVulkanCommand::DestroyBufferCollectionFuchsia),
4888
74
                proc: unsafe {
4889
74
                    std::mem::transmute::<
4890
74
                        vk::PFN_vkDestroyBufferCollectionFUCHSIA,
4891
74
                        vk::PFN_vkVoidFunction,
4892
74
                    >(Self::destroy_buffer_collection_fuchsia)
4893
74
                },
4894
74
            },
4895
74
            VulkanCommand {
4896
74
                name: "vkDestroyBufferView",
4897
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBufferView),
4899
74
                proc: unsafe {
4900
74
                    std::mem::transmute::<vk::PFN_vkDestroyBufferView, vk::PFN_vkVoidFunction>(
4901
74
                        Self::destroy_buffer_view,
4902
74
                    )
4903
74
                },
4904
74
            },
4905
74
            VulkanCommand {
4906
74
                name: "vkDestroyCommandPool",
4907
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4908
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCommandPool),
4909
74
                proc: unsafe {
4910
74
                    std::mem::transmute::<vk::PFN_vkDestroyCommandPool, vk::PFN_vkVoidFunction>(
4911
74
                        Self::destroy_command_pool,
4912
74
                    )
4913
74
                },
4914
74
            },
4915
74
            VulkanCommand {
4916
74
                name: "vkDestroyCuFunctionNVX",
4917
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4918
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuFunctionNvx),
4919
74
                proc: unsafe {
4920
74
                    std::mem::transmute::<vk::PFN_vkDestroyCuFunctionNVX, vk::PFN_vkVoidFunction>(
4921
74
                        Self::destroy_cu_function_nvx,
4922
74
                    )
4923
74
                },
4924
74
            },
4925
74
            VulkanCommand {
4926
74
                name: "vkDestroyCuModuleNVX",
4927
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4928
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuModuleNvx),
4929
74
                proc: unsafe {
4930
74
                    std::mem::transmute::<vk::PFN_vkDestroyCuModuleNVX, vk::PFN_vkVoidFunction>(
4931
74
                        Self::destroy_cu_module_nvx,
4932
74
                    )
4933
74
                },
4934
74
            },
4935
74
            VulkanCommand {
4936
74
                name: "vkDestroyDeferredOperationKHR",
4937
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4938
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDeferredOperationKhr),
4939
74
                proc: unsafe {
4940
74
                    std::mem::transmute::<
4941
74
                        vk::PFN_vkDestroyDeferredOperationKHR,
4942
74
                        vk::PFN_vkVoidFunction,
4943
74
                    >(Self::destroy_deferred_operation_khr)
4944
74
                },
4945
74
            },
4946
74
            VulkanCommand {
4947
74
                name: "vkDestroyDescriptorPool",
4948
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4949
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorPool),
4950
74
                proc: unsafe {
4951
74
                    std::mem::transmute::<vk::PFN_vkDestroyDescriptorPool, vk::PFN_vkVoidFunction>(
4952
74
                        Self::destroy_descriptor_pool,
4953
74
                    )
4954
74
                },
4955
74
            },
4956
74
            VulkanCommand {
4957
74
                name: "vkDestroyDescriptorSetLayout",
4958
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4959
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorSetLayout),
4960
74
                proc: unsafe {
4961
74
                    std::mem::transmute::<
4962
74
                        vk::PFN_vkDestroyDescriptorSetLayout,
4963
74
                        vk::PFN_vkVoidFunction,
4964
74
                    >(Self::destroy_descriptor_set_layout)
4965
74
                },
4966
74
            },
4967
74
            VulkanCommand {
4968
74
                name: "vkDestroyDescriptorUpdateTemplate",
4969
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4970
74
                hooked: hooked_commands
4971
74
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4972
74
                proc: unsafe {
4973
74
                    std::mem::transmute::<
4974
74
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4975
74
                        vk::PFN_vkVoidFunction,
4976
74
                    >(Self::destroy_descriptor_update_template)
4977
74
                },
4978
74
            },
4979
74
            VulkanCommand {
4980
74
                name: "vkDestroyDescriptorUpdateTemplateKHR",
4981
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4982
74
                hooked: hooked_commands
4983
74
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4984
74
                proc: unsafe {
4985
74
                    std::mem::transmute::<
4986
74
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4987
74
                        vk::PFN_vkVoidFunction,
4988
74
                    >(Self::destroy_descriptor_update_template)
4989
74
                },
4990
74
            },
4991
74
            VulkanCommand {
4992
74
                name: "vkDestroyDevice",
4993
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4994
                hooked: true,
4995
                proc: unsafe {
4996
74
                    std::mem::transmute::<vk::PFN_vkDestroyDevice, vk::PFN_vkVoidFunction>(
4997
74
                        Self::destroy_device,
4998
74
                    )
4999
74
                },
5000
74
            },
5001
74
            VulkanCommand {
5002
74
                name: "vkDestroyEvent",
5003
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5004
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyEvent),
5005
74
                proc: unsafe {
5006
74
                    std::mem::transmute::<vk::PFN_vkDestroyEvent, vk::PFN_vkVoidFunction>(
5007
74
                        Self::destroy_event,
5008
74
                    )
5009
74
                },
5010
74
            },
5011
74
            VulkanCommand {
5012
74
                name: "vkDestroyFence",
5013
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5014
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFence),
5015
74
                proc: unsafe {
5016
74
                    std::mem::transmute::<vk::PFN_vkDestroyFence, vk::PFN_vkVoidFunction>(
5017
74
                        Self::destroy_fence,
5018
74
                    )
5019
74
                },
5020
74
            },
5021
74
            VulkanCommand {
5022
74
                name: "vkDestroyFramebuffer",
5023
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5024
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFramebuffer),
5025
74
                proc: unsafe {
5026
74
                    std::mem::transmute::<vk::PFN_vkDestroyFramebuffer, vk::PFN_vkVoidFunction>(
5027
74
                        Self::destroy_framebuffer,
5028
74
                    )
5029
74
                },
5030
74
            },
5031
74
            VulkanCommand {
5032
74
                name: "vkDestroyImage",
5033
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5034
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImage),
5035
74
                proc: unsafe {
5036
74
                    std::mem::transmute::<vk::PFN_vkDestroyImage, vk::PFN_vkVoidFunction>(
5037
74
                        Self::destroy_image,
5038
74
                    )
5039
74
                },
5040
74
            },
5041
74
            VulkanCommand {
5042
74
                name: "vkDestroyImageView",
5043
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5044
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImageView),
5045
74
                proc: unsafe {
5046
74
                    std::mem::transmute::<vk::PFN_vkDestroyImageView, vk::PFN_vkVoidFunction>(
5047
74
                        Self::destroy_image_view,
5048
74
                    )
5049
74
                },
5050
74
            },
5051
74
            VulkanCommand {
5052
74
                name: "vkDestroyIndirectCommandsLayoutNV",
5053
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5054
74
                hooked: hooked_commands
5055
74
                    .contains(&LayerVulkanCommand::DestroyIndirectCommandsLayoutNv),
5056
74
                proc: unsafe {
5057
74
                    std::mem::transmute::<
5058
74
                        vk::PFN_vkDestroyIndirectCommandsLayoutNV,
5059
74
                        vk::PFN_vkVoidFunction,
5060
74
                    >(Self::destroy_indirect_commands_layout_nv)
5061
74
                },
5062
74
            },
5063
74
            VulkanCommand {
5064
74
                name: "vkDestroyMicromapEXT",
5065
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5066
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyMicromapExt),
5067
74
                proc: unsafe {
5068
74
                    std::mem::transmute::<vk::PFN_vkDestroyMicromapEXT, vk::PFN_vkVoidFunction>(
5069
74
                        Self::destroy_micromap_ext,
5070
74
                    )
5071
74
                },
5072
74
            },
5073
74
            VulkanCommand {
5074
74
                name: "vkDestroyOpticalFlowSessionNV",
5075
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
5076
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyOpticalFlowSessionNv),
5077
74
                proc: unsafe {
5078
74
                    std::mem::transmute::<
5079
74
                        vk::PFN_vkDestroyOpticalFlowSessionNV,
5080
74
                        vk::PFN_vkVoidFunction,
5081
74
                    >(Self::destroy_optical_flow_session_nv)
5082
74
                },
5083
74
            },
5084
74
            VulkanCommand {
5085
74
                name: "vkDestroyPipeline",
5086
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5087
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipeline),
5088
74
                proc: unsafe {
5089
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipeline, vk::PFN_vkVoidFunction>(
5090
74
                        Self::destroy_pipeline,
5091
74
                    )
5092
74
                },
5093
74
            },
5094
74
            VulkanCommand {
5095
74
                name: "vkDestroyPipelineCache",
5096
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5097
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineCache),
5098
74
                proc: unsafe {
5099
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineCache, vk::PFN_vkVoidFunction>(
5100
74
                        Self::destroy_pipeline_cache,
5101
74
                    )
5102
74
                },
5103
74
            },
5104
74
            VulkanCommand {
5105
74
                name: "vkDestroyPipelineLayout",
5106
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5107
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineLayout),
5108
74
                proc: unsafe {
5109
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineLayout, vk::PFN_vkVoidFunction>(
5110
74
                        Self::destroy_pipeline_layout,
5111
74
                    )
5112
74
                },
5113
74
            },
5114
74
            VulkanCommand {
5115
74
                name: "vkDestroyPrivateDataSlot",
5116
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5117
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5118
74
                proc: unsafe {
5119
74
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5120
74
                        Self::destroy_private_data_slot,
5121
74
                    )
5122
74
                },
5123
74
            },
5124
74
            VulkanCommand {
5125
74
                name: "vkDestroyPrivateDataSlotEXT",
5126
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
5127
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5128
74
                proc: unsafe {
5129
74
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5130
74
                        Self::destroy_private_data_slot,
5131
74
                    )
5132
74
                },
5133
74
            },
5134
74
            VulkanCommand {
5135
74
                name: "vkDestroyQueryPool",
5136
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5137
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyQueryPool),
5138
74
                proc: unsafe {
5139
74
                    std::mem::transmute::<vk::PFN_vkDestroyQueryPool, vk::PFN_vkVoidFunction>(
5140
74
                        Self::destroy_query_pool,
5141
74
                    )
5142
74
                },
5143
74
            },
5144
74
            VulkanCommand {
5145
74
                name: "vkDestroyRenderPass",
5146
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5147
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyRenderPass),
5148
74
                proc: unsafe {
5149
74
                    std::mem::transmute::<vk::PFN_vkDestroyRenderPass, vk::PFN_vkVoidFunction>(
5150
74
                        Self::destroy_render_pass,
5151
74
                    )
5152
74
                },
5153
74
            },
5154
74
            VulkanCommand {
5155
74
                name: "vkDestroySampler",
5156
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5157
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySampler),
5158
74
                proc: unsafe {
5159
74
                    std::mem::transmute::<vk::PFN_vkDestroySampler, vk::PFN_vkVoidFunction>(
5160
74
                        Self::destroy_sampler,
5161
74
                    )
5162
74
                },
5163
74
            },
5164
74
            VulkanCommand {
5165
74
                name: "vkDestroySamplerYcbcrConversion",
5166
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5167
74
                hooked: hooked_commands
5168
74
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5169
74
                proc: unsafe {
5170
74
                    std::mem::transmute::<
5171
74
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5172
74
                        vk::PFN_vkVoidFunction,
5173
74
                    >(Self::destroy_sampler_ycbcr_conversion)
5174
74
                },
5175
74
            },
5176
74
            VulkanCommand {
5177
74
                name: "vkDestroySamplerYcbcrConversionKHR",
5178
74
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
5179
74
                hooked: hooked_commands
5180
74
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5181
74
                proc: unsafe {
5182
74
                    std::mem::transmute::<
5183
74
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5184
74
                        vk::PFN_vkVoidFunction,
5185
74
                    >(Self::destroy_sampler_ycbcr_conversion)
5186
74
                },
5187
74
            },
5188
74
            VulkanCommand {
5189
74
                name: "vkDestroySemaphore",
5190
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5191
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySemaphore),
5192
74
                proc: unsafe {
5193
74
                    std::mem::transmute::<vk::PFN_vkDestroySemaphore, vk::PFN_vkVoidFunction>(
5194
74
                        Self::destroy_semaphore,
5195
74
                    )
5196
74
                },
5197
74
            },
5198
74
            VulkanCommand {
5199
74
                name: "vkDestroyShaderModule",
5200
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5201
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyShaderModule),
5202
74
                proc: unsafe {
5203
74
                    std::mem::transmute::<vk::PFN_vkDestroyShaderModule, vk::PFN_vkVoidFunction>(
5204
74
                        Self::destroy_shader_module,
5205
74
                    )
5206
74
                },
5207
74
            },
5208
74
            VulkanCommand {
5209
74
                name: "vkDestroySwapchainKHR",
5210
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
5211
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySwapchainKhr),
5212
74
                proc: unsafe {
5213
74
                    std::mem::transmute::<vk::PFN_vkDestroySwapchainKHR, vk::PFN_vkVoidFunction>(
5214
74
                        Self::destroy_swapchain_khr,
5215
74
                    )
5216
74
                },
5217
74
            },
5218
74
            VulkanCommand {
5219
74
                name: "vkDestroyValidationCacheEXT",
5220
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
5221
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyValidationCacheExt),
5222
74
                proc: unsafe {
5223
74
                    std::mem::transmute::<vk::PFN_vkDestroyValidationCacheEXT, vk::PFN_vkVoidFunction>(
5224
74
                        Self::destroy_validation_cache_ext,
5225
74
                    )
5226
74
                },
5227
74
            },
5228
74
            VulkanCommand {
5229
74
                name: "vkDestroyVideoSessionKHR",
5230
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5231
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyVideoSessionKhr),
5232
74
                proc: unsafe {
5233
74
                    std::mem::transmute::<vk::PFN_vkDestroyVideoSessionKHR, vk::PFN_vkVoidFunction>(
5234
74
                        Self::destroy_video_session_khr,
5235
74
                    )
5236
74
                },
5237
74
            },
5238
74
            VulkanCommand {
5239
74
                name: "vkDestroyVideoSessionParametersKHR",
5240
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5241
74
                hooked: hooked_commands
5242
74
                    .contains(&LayerVulkanCommand::DestroyVideoSessionParametersKhr),
5243
74
                proc: unsafe {
5244
74
                    std::mem::transmute::<
5245
74
                        vk::PFN_vkDestroyVideoSessionParametersKHR,
5246
74
                        vk::PFN_vkVoidFunction,
5247
74
                    >(Self::destroy_video_session_parameters_khr)
5248
74
                },
5249
74
            },
5250
74
            VulkanCommand {
5251
74
                name: "vkDeviceWaitIdle",
5252
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5253
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeviceWaitIdle),
5254
74
                proc: unsafe {
5255
74
                    std::mem::transmute::<vk::PFN_vkDeviceWaitIdle, vk::PFN_vkVoidFunction>(
5256
74
                        Self::device_wait_idle,
5257
74
                    )
5258
74
                },
5259
74
            },
5260
74
            VulkanCommand {
5261
74
                name: "vkDisplayPowerControlEXT",
5262
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
5263
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DisplayPowerControlExt),
5264
74
                proc: unsafe {
5265
74
                    std::mem::transmute::<vk::PFN_vkDisplayPowerControlEXT, vk::PFN_vkVoidFunction>(
5266
74
                        Self::display_power_control_ext,
5267
74
                    )
5268
74
                },
5269
74
            },
5270
74
            VulkanCommand {
5271
74
                name: "vkEndCommandBuffer",
5272
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5273
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::EndCommandBuffer),
5274
74
                proc: unsafe {
5275
74
                    std::mem::transmute::<vk::PFN_vkEndCommandBuffer, vk::PFN_vkVoidFunction>(
5276
74
                        Self::end_command_buffer,
5277
74
                    )
5278
74
                },
5279
74
            },
5280
74
            VulkanCommand {
5281
74
                name: "vkExportMetalObjectsEXT",
5282
74
                features: smallvec![
Feature::Extension(Extension::EXTMetalObjects)0
],
5283
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ExportMetalObjectsExt),
5284
74
                proc: unsafe {
5285
74
                    std::mem::transmute::<vk::PFN_vkExportMetalObjectsEXT, vk::PFN_vkVoidFunction>(
5286
74
                        Self::export_metal_objects_ext,
5287
74
                    )
5288
74
                },
5289
74
            },
5290
74
            VulkanCommand {
5291
74
                name: "vkFlushMappedMemoryRanges",
5292
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5293
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FlushMappedMemoryRanges),
5294
74
                proc: unsafe {
5295
74
                    std::mem::transmute::<vk::PFN_vkFlushMappedMemoryRanges, vk::PFN_vkVoidFunction>(
5296
74
                        Self::flush_mapped_memory_ranges,
5297
74
                    )
5298
74
                },
5299
74
            },
5300
74
            VulkanCommand {
5301
74
                name: "vkFreeCommandBuffers",
5302
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5303
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeCommandBuffers),
5304
74
                proc: unsafe {
5305
74
                    std::mem::transmute::<vk::PFN_vkFreeCommandBuffers, vk::PFN_vkVoidFunction>(
5306
74
                        Self::free_command_buffers,
5307
74
                    )
5308
74
                },
5309
74
            },
5310
74
            VulkanCommand {
5311
74
                name: "vkFreeDescriptorSets",
5312
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5313
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeDescriptorSets),
5314
74
                proc: unsafe {
5315
74
                    std::mem::transmute::<vk::PFN_vkFreeDescriptorSets, vk::PFN_vkVoidFunction>(
5316
74
                        Self::free_descriptor_sets,
5317
74
                    )
5318
74
                },
5319
74
            },
5320
74
            VulkanCommand {
5321
74
                name: "vkFreeMemory",
5322
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5323
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeMemory),
5324
74
                proc: unsafe {
5325
74
                    std::mem::transmute::<vk::PFN_vkFreeMemory, vk::PFN_vkVoidFunction>(
5326
74
                        Self::free_memory,
5327
74
                    )
5328
74
                },
5329
74
            },
5330
74
            VulkanCommand {
5331
74
                name: "vkGetAccelerationStructureBuildSizesKHR",
5332
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5333
74
                hooked: hooked_commands
5334
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureBuildSizesKhr),
5335
74
                proc: unsafe {
5336
74
                    std::mem::transmute::<
5337
74
                        vk::PFN_vkGetAccelerationStructureBuildSizesKHR,
5338
74
                        vk::PFN_vkVoidFunction,
5339
74
                    >(Self::get_acceleration_structure_build_sizes_khr)
5340
74
                },
5341
74
            },
5342
74
            VulkanCommand {
5343
74
                name: "vkGetAccelerationStructureDeviceAddressKHR",
5344
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5345
74
                hooked: hooked_commands
5346
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureDeviceAddressKhr),
5347
74
                proc: unsafe {
5348
74
                    std::mem::transmute::<
5349
74
                        vk::PFN_vkGetAccelerationStructureDeviceAddressKHR,
5350
74
                        vk::PFN_vkVoidFunction,
5351
74
                    >(Self::get_acceleration_structure_device_address_khr)
5352
74
                },
5353
74
            },
5354
74
            VulkanCommand {
5355
74
                name: "vkGetAccelerationStructureHandleNV",
5356
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5357
74
                hooked: hooked_commands
5358
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureHandleNv),
5359
74
                proc: unsafe {
5360
74
                    std::mem::transmute::<
5361
74
                        vk::PFN_vkGetAccelerationStructureHandleNV,
5362
74
                        vk::PFN_vkVoidFunction,
5363
74
                    >(Self::get_acceleration_structure_handle_nv)
5364
74
                },
5365
74
            },
5366
74
            VulkanCommand {
5367
74
                name: "vkGetAccelerationStructureMemoryRequirementsNV",
5368
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5369
74
                hooked: hooked_commands
5370
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureMemoryRequirementsNv),
5371
74
                proc: unsafe {
5372
74
                    std::mem::transmute::<
5373
74
                        vk::PFN_vkGetAccelerationStructureMemoryRequirementsNV,
5374
74
                        vk::PFN_vkVoidFunction,
5375
74
                    >(Self::get_acceleration_structure_memory_requirements_nv)
5376
74
                },
5377
74
            },
5378
74
            VulkanCommand {
5379
74
                name: "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT",
5380
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5381
74
                hooked: hooked_commands.contains(
5382
74
                    &LayerVulkanCommand::GetAccelerationStructureOpaqueCaptureDescriptorDataExt,
5383
74
                ),
5384
74
                proc: unsafe {
5385
74
                    std::mem::transmute::<
5386
74
                        vk::PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT,
5387
74
                        vk::PFN_vkVoidFunction,
5388
74
                    >(
5389
74
                        Self::get_acceleration_structure_opaque_capture_descriptor_data_ext
5390
74
                    )
5391
74
                },
5392
74
            },
5393
74
            VulkanCommand {
5394
74
                name: "vkGetAndroidHardwareBufferPropertiesANDROID",
5395
74
                features: smallvec![Feature::Extension(
5396
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
5397
0
                )],
5398
74
                hooked: hooked_commands
5399
74
                    .contains(&LayerVulkanCommand::GetAndroidHardwareBufferPropertiesAndroid),
5400
74
                proc: unsafe {
5401
74
                    std::mem::transmute::<
5402
74
                        vk::PFN_vkGetAndroidHardwareBufferPropertiesANDROID,
5403
74
                        vk::PFN_vkVoidFunction,
5404
74
                    >(Self::get_android_hardware_buffer_properties_android)
5405
74
                },
5406
74
            },
5407
74
            VulkanCommand {
5408
74
                name: "vkGetBufferCollectionPropertiesFUCHSIA",
5409
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
5410
74
                hooked: hooked_commands
5411
74
                    .contains(&LayerVulkanCommand::GetBufferCollectionPropertiesFuchsia),
5412
74
                proc: unsafe {
5413
74
                    std::mem::transmute::<
5414
74
                        vk::PFN_vkGetBufferCollectionPropertiesFUCHSIA,
5415
74
                        vk::PFN_vkVoidFunction,
5416
74
                    >(Self::get_buffer_collection_properties_fuchsia)
5417
74
                },
5418
74
            },
5419
74
            VulkanCommand {
5420
74
                name: "vkGetBufferDeviceAddress",
5421
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5422
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5423
74
                proc: unsafe {
5424
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5425
74
                        Self::get_buffer_device_address,
5426
74
                    )
5427
74
                },
5428
74
            },
5429
74
            VulkanCommand {
5430
74
                name: "vkGetBufferDeviceAddressEXT",
5431
74
                features: smallvec![
Feature::Extension(Extension::EXTBufferDeviceAddress)0
],
5432
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5433
74
                proc: unsafe {
5434
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5435
74
                        Self::get_buffer_device_address,
5436
74
                    )
5437
74
                },
5438
74
            },
5439
74
            VulkanCommand {
5440
74
                name: "vkGetBufferDeviceAddressKHR",
5441
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5442
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5443
74
                proc: unsafe {
5444
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5445
74
                        Self::get_buffer_device_address,
5446
74
                    )
5447
74
                },
5448
74
            },
5449
74
            VulkanCommand {
5450
74
                name: "vkGetBufferMemoryRequirements",
5451
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5452
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements),
5453
74
                proc: unsafe {
5454
74
                    std::mem::transmute::<
5455
74
                        vk::PFN_vkGetBufferMemoryRequirements,
5456
74
                        vk::PFN_vkVoidFunction,
5457
74
                    >(Self::get_buffer_memory_requirements)
5458
74
                },
5459
74
            },
5460
74
            VulkanCommand {
5461
74
                name: "vkGetBufferMemoryRequirements2",
5462
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5463
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5464
74
                proc: unsafe {
5465
74
                    std::mem::transmute::<
5466
74
                        vk::PFN_vkGetBufferMemoryRequirements2,
5467
74
                        vk::PFN_vkVoidFunction,
5468
74
                    >(Self::get_buffer_memory_requirements2)
5469
74
                },
5470
74
            },
5471
74
            VulkanCommand {
5472
74
                name: "vkGetBufferMemoryRequirements2KHR",
5473
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5474
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5475
74
                proc: unsafe {
5476
74
                    std::mem::transmute::<
5477
74
                        vk::PFN_vkGetBufferMemoryRequirements2,
5478
74
                        vk::PFN_vkVoidFunction,
5479
74
                    >(Self::get_buffer_memory_requirements2)
5480
74
                },
5481
74
            },
5482
74
            VulkanCommand {
5483
74
                name: "vkGetBufferOpaqueCaptureAddress",
5484
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5485
74
                hooked: hooked_commands
5486
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5487
74
                proc: unsafe {
5488
74
                    std::mem::transmute::<
5489
74
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5490
74
                        vk::PFN_vkVoidFunction,
5491
74
                    >(Self::get_buffer_opaque_capture_address)
5492
74
                },
5493
74
            },
5494
74
            VulkanCommand {
5495
74
                name: "vkGetBufferOpaqueCaptureAddressKHR",
5496
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5497
74
                hooked: hooked_commands
5498
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5499
74
                proc: unsafe {
5500
74
                    std::mem::transmute::<
5501
74
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5502
74
                        vk::PFN_vkVoidFunction,
5503
74
                    >(Self::get_buffer_opaque_capture_address)
5504
74
                },
5505
74
            },
5506
74
            VulkanCommand {
5507
74
                name: "vkGetBufferOpaqueCaptureDescriptorDataEXT",
5508
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5509
74
                hooked: hooked_commands
5510
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureDescriptorDataExt),
5511
74
                proc: unsafe {
5512
74
                    std::mem::transmute::<
5513
74
                        vk::PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT,
5514
74
                        vk::PFN_vkVoidFunction,
5515
74
                    >(Self::get_buffer_opaque_capture_descriptor_data_ext)
5516
74
                },
5517
74
            },
5518
74
            VulkanCommand {
5519
74
                name: "vkGetCalibratedTimestampsEXT",
5520
74
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
5521
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetCalibratedTimestampsExt),
5522
74
                proc: unsafe {
5523
74
                    std::mem::transmute::<
5524
74
                        vk::PFN_vkGetCalibratedTimestampsEXT,
5525
74
                        vk::PFN_vkVoidFunction,
5526
74
                    >(Self::get_calibrated_timestamps_ext)
5527
74
                },
5528
74
            },
5529
74
            VulkanCommand {
5530
74
                name: "vkGetDeferredOperationMaxConcurrencyKHR",
5531
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5532
74
                hooked: hooked_commands
5533
74
                    .contains(&LayerVulkanCommand::GetDeferredOperationMaxConcurrencyKhr),
5534
74
                proc: unsafe {
5535
74
                    std::mem::transmute::<
5536
74
                        vk::PFN_vkGetDeferredOperationMaxConcurrencyKHR,
5537
74
                        vk::PFN_vkVoidFunction,
5538
74
                    >(Self::get_deferred_operation_max_concurrency_khr)
5539
74
                },
5540
74
            },
5541
74
            VulkanCommand {
5542
74
                name: "vkGetDeferredOperationResultKHR",
5543
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5544
74
                hooked: hooked_commands
5545
74
                    .contains(&LayerVulkanCommand::GetDeferredOperationResultKhr),
5546
74
                proc: unsafe {
5547
74
                    std::mem::transmute::<
5548
74
                        vk::PFN_vkGetDeferredOperationResultKHR,
5549
74
                        vk::PFN_vkVoidFunction,
5550
74
                    >(Self::get_deferred_operation_result_khr)
5551
74
                },
5552
74
            },
5553
74
            VulkanCommand {
5554
74
                name: "vkGetDescriptorEXT",
5555
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5556
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDescriptorExt),
5557
74
                proc: unsafe {
5558
74
                    std::mem::transmute::<vk::PFN_vkGetDescriptorEXT, vk::PFN_vkVoidFunction>(
5559
74
                        Self::get_descriptor_ext,
5560
74
                    )
5561
74
                },
5562
74
            },
5563
74
            VulkanCommand {
5564
74
                name: "vkGetDescriptorSetHostMappingVALVE",
5565
74
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5566
74
                hooked: hooked_commands
5567
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetHostMappingValve),
5568
74
                proc: unsafe {
5569
74
                    std::mem::transmute::<
5570
74
                        vk::PFN_vkGetDescriptorSetHostMappingVALVE,
5571
74
                        vk::PFN_vkVoidFunction,
5572
74
                    >(Self::get_descriptor_set_host_mapping_valve)
5573
74
                },
5574
74
            },
5575
74
            VulkanCommand {
5576
74
                name: "vkGetDescriptorSetLayoutBindingOffsetEXT",
5577
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5578
74
                hooked: hooked_commands
5579
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutBindingOffsetExt),
5580
74
                proc: unsafe {
5581
74
                    std::mem::transmute::<
5582
74
                        vk::PFN_vkGetDescriptorSetLayoutBindingOffsetEXT,
5583
74
                        vk::PFN_vkVoidFunction,
5584
74
                    >(Self::get_descriptor_set_layout_binding_offset_ext)
5585
74
                },
5586
74
            },
5587
74
            VulkanCommand {
5588
74
                name: "vkGetDescriptorSetLayoutHostMappingInfoVALVE",
5589
74
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5590
74
                hooked: hooked_commands
5591
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutHostMappingInfoValve),
5592
74
                proc: unsafe {
5593
74
                    std::mem::transmute::<
5594
74
                        vk::PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE,
5595
74
                        vk::PFN_vkVoidFunction,
5596
74
                    >(Self::get_descriptor_set_layout_host_mapping_info_valve)
5597
74
                },
5598
74
            },
5599
74
            VulkanCommand {
5600
74
                name: "vkGetDescriptorSetLayoutSizeEXT",
5601
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5602
74
                hooked: hooked_commands
5603
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSizeExt),
5604
74
                proc: unsafe {
5605
74
                    std::mem::transmute::<
5606
74
                        vk::PFN_vkGetDescriptorSetLayoutSizeEXT,
5607
74
                        vk::PFN_vkVoidFunction,
5608
74
                    >(Self::get_descriptor_set_layout_size_ext)
5609
74
                },
5610
74
            },
5611
74
            VulkanCommand {
5612
74
                name: "vkGetDescriptorSetLayoutSupport",
5613
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5614
74
                hooked: hooked_commands
5615
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5616
74
                proc: unsafe {
5617
74
                    std::mem::transmute::<
5618
74
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5619
74
                        vk::PFN_vkVoidFunction,
5620
74
                    >(Self::get_descriptor_set_layout_support)
5621
74
                },
5622
74
            },
5623
74
            VulkanCommand {
5624
74
                name: "vkGetDescriptorSetLayoutSupportKHR",
5625
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance3)0
],
5626
74
                hooked: hooked_commands
5627
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5628
74
                proc: unsafe {
5629
74
                    std::mem::transmute::<
5630
74
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5631
74
                        vk::PFN_vkVoidFunction,
5632
74
                    >(Self::get_descriptor_set_layout_support)
5633
74
                },
5634
74
            },
5635
74
            VulkanCommand {
5636
74
                name: "vkGetDeviceAccelerationStructureCompatibilityKHR",
5637
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5638
74
                hooked: hooked_commands
5639
74
                    .contains(&LayerVulkanCommand::GetDeviceAccelerationStructureCompatibilityKhr),
5640
74
                proc: unsafe {
5641
74
                    std::mem::transmute::<
5642
74
                        vk::PFN_vkGetDeviceAccelerationStructureCompatibilityKHR,
5643
74
                        vk::PFN_vkVoidFunction,
5644
74
                    >(Self::get_device_acceleration_structure_compatibility_khr)
5645
74
                },
5646
74
            },
5647
74
            VulkanCommand {
5648
74
                name: "vkGetDeviceBufferMemoryRequirements",
5649
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5650
74
                hooked: hooked_commands
5651
74
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5652
74
                proc: unsafe {
5653
74
                    std::mem::transmute::<
5654
74
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5655
74
                        vk::PFN_vkVoidFunction,
5656
74
                    >(Self::get_device_buffer_memory_requirements)
5657
74
                },
5658
74
            },
5659
74
            VulkanCommand {
5660
74
                name: "vkGetDeviceBufferMemoryRequirementsKHR",
5661
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5662
74
                hooked: hooked_commands
5663
74
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5664
74
                proc: unsafe {
5665
74
                    std::mem::transmute::<
5666
74
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5667
74
                        vk::PFN_vkVoidFunction,
5668
74
                    >(Self::get_device_buffer_memory_requirements)
5669
74
                },
5670
74
            },
5671
74
            VulkanCommand {
5672
74
                name: "vkGetDeviceGroupPeerMemoryFeatures",
5673
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5674
74
                hooked: hooked_commands
5675
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5676
74
                proc: unsafe {
5677
74
                    std::mem::transmute::<
5678
74
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5679
74
                        vk::PFN_vkVoidFunction,
5680
74
                    >(Self::get_device_group_peer_memory_features)
5681
74
                },
5682
74
            },
5683
74
            VulkanCommand {
5684
74
                name: "vkGetDeviceGroupPeerMemoryFeaturesKHR",
5685
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
5686
74
                hooked: hooked_commands
5687
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5688
74
                proc: unsafe {
5689
74
                    std::mem::transmute::<
5690
74
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5691
74
                        vk::PFN_vkVoidFunction,
5692
74
                    >(Self::get_device_group_peer_memory_features)
5693
74
                },
5694
74
            },
5695
74
            VulkanCommand {
5696
74
                name: "vkGetDeviceGroupPresentCapabilitiesKHR",
5697
74
                features: smallvec![
5698
0
                    Feature::Extension(Extension::KHRSwapchain),
5699
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5700
                ],
5701
74
                hooked: hooked_commands
5702
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPresentCapabilitiesKhr),
5703
74
                proc: unsafe {
5704
74
                    std::mem::transmute::<
5705
74
                        vk::PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
5706
74
                        vk::PFN_vkVoidFunction,
5707
74
                    >(Self::get_device_group_present_capabilities_khr)
5708
74
                },
5709
74
            },
5710
74
            VulkanCommand {
5711
74
                name: "vkGetDeviceGroupSurfacePresentModes2EXT",
5712
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
5713
74
                hooked: hooked_commands
5714
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModes2Ext),
5715
74
                proc: unsafe {
5716
74
                    std::mem::transmute::<
5717
74
                        vk::PFN_vkGetDeviceGroupSurfacePresentModes2EXT,
5718
74
                        vk::PFN_vkVoidFunction,
5719
74
                    >(Self::get_device_group_surface_present_modes2_ext)
5720
74
                },
5721
74
            },
5722
74
            VulkanCommand {
5723
74
                name: "vkGetDeviceGroupSurfacePresentModesKHR",
5724
74
                features: smallvec![
5725
0
                    Feature::Extension(Extension::KHRSwapchain),
5726
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5727
                ],
5728
74
                hooked: hooked_commands
5729
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModesKhr),
5730
74
                proc: unsafe {
5731
74
                    std::mem::transmute::<
5732
74
                        vk::PFN_vkGetDeviceGroupSurfacePresentModesKHR,
5733
74
                        vk::PFN_vkVoidFunction,
5734
74
                    >(Self::get_device_group_surface_present_modes_khr)
5735
74
                },
5736
74
            },
5737
74
            VulkanCommand {
5738
74
                name: "vkGetDeviceImageMemoryRequirements",
5739
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5740
74
                hooked: hooked_commands
5741
74
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5742
74
                proc: unsafe {
5743
74
                    std::mem::transmute::<
5744
74
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5745
74
                        vk::PFN_vkVoidFunction,
5746
74
                    >(Self::get_device_image_memory_requirements)
5747
74
                },
5748
74
            },
5749
74
            VulkanCommand {
5750
74
                name: "vkGetDeviceImageMemoryRequirementsKHR",
5751
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5752
74
                hooked: hooked_commands
5753
74
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5754
74
                proc: unsafe {
5755
74
                    std::mem::transmute::<
5756
74
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5757
74
                        vk::PFN_vkVoidFunction,
5758
74
                    >(Self::get_device_image_memory_requirements)
5759
74
                },
5760
74
            },
5761
74
            VulkanCommand {
5762
74
                name: "vkGetDeviceImageSparseMemoryRequirements",
5763
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5764
74
                hooked: hooked_commands
5765
74
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5766
74
                proc: unsafe {
5767
74
                    std::mem::transmute::<
5768
74
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5769
74
                        vk::PFN_vkVoidFunction,
5770
74
                    >(Self::get_device_image_sparse_memory_requirements)
5771
74
                },
5772
74
            },
5773
74
            VulkanCommand {
5774
74
                name: "vkGetDeviceImageSparseMemoryRequirementsKHR",
5775
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5776
74
                hooked: hooked_commands
5777
74
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5778
74
                proc: unsafe {
5779
74
                    std::mem::transmute::<
5780
74
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5781
74
                        vk::PFN_vkVoidFunction,
5782
74
                    >(Self::get_device_image_sparse_memory_requirements)
5783
74
                },
5784
74
            },
5785
74
            VulkanCommand {
5786
74
                name: "vkGetDeviceMemoryCommitment",
5787
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5788
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceMemoryCommitment),
5789
74
                proc: unsafe {
5790
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceMemoryCommitment, vk::PFN_vkVoidFunction>(
5791
74
                        Self::get_device_memory_commitment,
5792
74
                    )
5793
74
                },
5794
74
            },
5795
74
            VulkanCommand {
5796
74
                name: "vkGetDeviceMemoryOpaqueCaptureAddress",
5797
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5798
74
                hooked: hooked_commands
5799
74
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5800
74
                proc: unsafe {
5801
74
                    std::mem::transmute::<
5802
74
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5803
74
                        vk::PFN_vkVoidFunction,
5804
74
                    >(Self::get_device_memory_opaque_capture_address)
5805
74
                },
5806
74
            },
5807
74
            VulkanCommand {
5808
74
                name: "vkGetDeviceMemoryOpaqueCaptureAddressKHR",
5809
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5810
74
                hooked: hooked_commands
5811
74
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5812
74
                proc: unsafe {
5813
74
                    std::mem::transmute::<
5814
74
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5815
74
                        vk::PFN_vkVoidFunction,
5816
74
                    >(Self::get_device_memory_opaque_capture_address)
5817
74
                },
5818
74
            },
5819
74
            VulkanCommand {
5820
74
                name: "vkGetDeviceMicromapCompatibilityEXT",
5821
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5822
74
                hooked: hooked_commands
5823
74
                    .contains(&LayerVulkanCommand::GetDeviceMicromapCompatibilityExt),
5824
74
                proc: unsafe {
5825
74
                    std::mem::transmute::<
5826
74
                        vk::PFN_vkGetDeviceMicromapCompatibilityEXT,
5827
74
                        vk::PFN_vkVoidFunction,
5828
74
                    >(Self::get_device_micromap_compatibility_ext)
5829
74
                },
5830
74
            },
5831
74
            VulkanCommand {
5832
74
                name: "vkGetDeviceProcAddr",
5833
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5834
                hooked: true,
5835
                proc: unsafe {
5836
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceProcAddr, vk::PFN_vkVoidFunction>(
5837
74
                        Self::get_device_proc_addr,
5838
74
                    )
5839
74
                },
5840
74
            },
5841
74
            VulkanCommand {
5842
74
                name: "vkGetDeviceQueue",
5843
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5844
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue),
5845
74
                proc: unsafe {
5846
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue, vk::PFN_vkVoidFunction>(
5847
74
                        Self::get_device_queue,
5848
74
                    )
5849
74
                },
5850
74
            },
5851
74
            VulkanCommand {
5852
74
                name: "vkGetDeviceQueue2",
5853
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5854
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue2),
5855
74
                proc: unsafe {
5856
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue2, vk::PFN_vkVoidFunction>(
5857
74
                        Self::get_device_queue2,
5858
74
                    )
5859
74
                },
5860
74
            },
5861
74
            VulkanCommand {
5862
74
                name: "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI",
5863
74
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
5864
74
                hooked: hooked_commands
5865
74
                    .contains(&LayerVulkanCommand::GetDeviceSubpassShadingMaxWorkgroupSizeHuawei),
5866
74
                proc: unsafe {
5867
74
                    std::mem::transmute::<
5868
74
                        vk::PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI,
5869
74
                        vk::PFN_vkVoidFunction,
5870
74
                    >(Self::get_device_subpass_shading_max_workgroup_size_huawei)
5871
74
                },
5872
74
            },
5873
74
            VulkanCommand {
5874
74
                name: "vkGetDynamicRenderingTilePropertiesQCOM",
5875
74
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5876
74
                hooked: hooked_commands
5877
74
                    .contains(&LayerVulkanCommand::GetDynamicRenderingTilePropertiesQcom),
5878
74
                proc: unsafe {
5879
74
                    std::mem::transmute::<
5880
74
                        vk::PFN_vkGetDynamicRenderingTilePropertiesQCOM,
5881
74
                        vk::PFN_vkVoidFunction,
5882
74
                    >(Self::get_dynamic_rendering_tile_properties_qcom)
5883
74
                },
5884
74
            },
5885
74
            VulkanCommand {
5886
74
                name: "vkGetEventStatus",
5887
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5888
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetEventStatus),
5889
74
                proc: unsafe {
5890
74
                    std::mem::transmute::<vk::PFN_vkGetEventStatus, vk::PFN_vkVoidFunction>(
5891
74
                        Self::get_event_status,
5892
74
                    )
5893
74
                },
5894
74
            },
5895
74
            VulkanCommand {
5896
74
                name: "vkGetFenceFdKHR",
5897
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
5898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceFdKhr),
5899
74
                proc: unsafe {
5900
74
                    std::mem::transmute::<vk::PFN_vkGetFenceFdKHR, vk::PFN_vkVoidFunction>(
5901
74
                        Self::get_fence_fd_khr,
5902
74
                    )
5903
74
                },
5904
74
            },
5905
74
            VulkanCommand {
5906
74
                name: "vkGetFenceStatus",
5907
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5908
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceStatus),
5909
74
                proc: unsafe {
5910
74
                    std::mem::transmute::<vk::PFN_vkGetFenceStatus, vk::PFN_vkVoidFunction>(
5911
74
                        Self::get_fence_status,
5912
74
                    )
5913
74
                },
5914
74
            },
5915
74
            VulkanCommand {
5916
74
                name: "vkGetFenceWin32HandleKHR",
5917
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
5918
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceWin32HandleKhr),
5919
74
                proc: unsafe {
5920
74
                    std::mem::transmute::<vk::PFN_vkGetFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
5921
74
                        Self::get_fence_win32_handle_khr,
5922
74
                    )
5923
74
                },
5924
74
            },
5925
74
            VulkanCommand {
5926
74
                name: "vkGetFramebufferTilePropertiesQCOM",
5927
74
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5928
74
                hooked: hooked_commands
5929
74
                    .contains(&LayerVulkanCommand::GetFramebufferTilePropertiesQcom),
5930
74
                proc: unsafe {
5931
74
                    std::mem::transmute::<
5932
74
                        vk::PFN_vkGetFramebufferTilePropertiesQCOM,
5933
74
                        vk::PFN_vkVoidFunction,
5934
74
                    >(Self::get_framebuffer_tile_properties_qcom)
5935
74
                },
5936
74
            },
5937
74
            VulkanCommand {
5938
74
                name: "vkGetGeneratedCommandsMemoryRequirementsNV",
5939
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5940
74
                hooked: hooked_commands
5941
74
                    .contains(&LayerVulkanCommand::GetGeneratedCommandsMemoryRequirementsNv),
5942
74
                proc: unsafe {
5943
74
                    std::mem::transmute::<
5944
74
                        vk::PFN_vkGetGeneratedCommandsMemoryRequirementsNV,
5945
74
                        vk::PFN_vkVoidFunction,
5946
74
                    >(Self::get_generated_commands_memory_requirements_nv)
5947
74
                },
5948
74
            },
5949
74
            VulkanCommand {
5950
74
                name: "vkGetImageDrmFormatModifierPropertiesEXT",
5951
74
                features: smallvec![
Feature::Extension(Extension::EXTImageDrmFormatModifier)0
],
5952
74
                hooked: hooked_commands
5953
74
                    .contains(&LayerVulkanCommand::GetImageDrmFormatModifierPropertiesExt),
5954
74
                proc: unsafe {
5955
74
                    std::mem::transmute::<
5956
74
                        vk::PFN_vkGetImageDrmFormatModifierPropertiesEXT,
5957
74
                        vk::PFN_vkVoidFunction,
5958
74
                    >(Self::get_image_drm_format_modifier_properties_ext)
5959
74
                },
5960
74
            },
5961
74
            VulkanCommand {
5962
74
                name: "vkGetImageMemoryRequirements",
5963
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5964
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements),
5965
74
                proc: unsafe {
5966
74
                    std::mem::transmute::<
5967
74
                        vk::PFN_vkGetImageMemoryRequirements,
5968
74
                        vk::PFN_vkVoidFunction,
5969
74
                    >(Self::get_image_memory_requirements)
5970
74
                },
5971
74
            },
5972
74
            VulkanCommand {
5973
74
                name: "vkGetImageMemoryRequirements2",
5974
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5975
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5976
74
                proc: unsafe {
5977
74
                    std::mem::transmute::<
5978
74
                        vk::PFN_vkGetImageMemoryRequirements2,
5979
74
                        vk::PFN_vkVoidFunction,
5980
74
                    >(Self::get_image_memory_requirements2)
5981
74
                },
5982
74
            },
5983
74
            VulkanCommand {
5984
74
                name: "vkGetImageMemoryRequirements2KHR",
5985
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5986
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5987
74
                proc: unsafe {
5988
74
                    std::mem::transmute::<
5989
74
                        vk::PFN_vkGetImageMemoryRequirements2,
5990
74
                        vk::PFN_vkVoidFunction,
5991
74
                    >(Self::get_image_memory_requirements2)
5992
74
                },
5993
74
            },
5994
74
            VulkanCommand {
5995
74
                name: "vkGetImageOpaqueCaptureDescriptorDataEXT",
5996
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5997
74
                hooked: hooked_commands
5998
74
                    .contains(&LayerVulkanCommand::GetImageOpaqueCaptureDescriptorDataExt),
5999
74
                proc: unsafe {
6000
74
                    std::mem::transmute::<
6001
74
                        vk::PFN_vkGetImageOpaqueCaptureDescriptorDataEXT,
6002
74
                        vk::PFN_vkVoidFunction,
6003
74
                    >(Self::get_image_opaque_capture_descriptor_data_ext)
6004
74
                },
6005
74
            },
6006
74
            VulkanCommand {
6007
74
                name: "vkGetImageSparseMemoryRequirements",
6008
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6009
74
                hooked: hooked_commands
6010
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements),
6011
74
                proc: unsafe {
6012
74
                    std::mem::transmute::<
6013
74
                        vk::PFN_vkGetImageSparseMemoryRequirements,
6014
74
                        vk::PFN_vkVoidFunction,
6015
74
                    >(Self::get_image_sparse_memory_requirements)
6016
74
                },
6017
74
            },
6018
74
            VulkanCommand {
6019
74
                name: "vkGetImageSparseMemoryRequirements2",
6020
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
6021
74
                hooked: hooked_commands
6022
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6023
74
                proc: unsafe {
6024
74
                    std::mem::transmute::<
6025
74
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6026
74
                        vk::PFN_vkVoidFunction,
6027
74
                    >(Self::get_image_sparse_memory_requirements2)
6028
74
                },
6029
74
            },
6030
74
            VulkanCommand {
6031
74
                name: "vkGetImageSparseMemoryRequirements2KHR",
6032
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
6033
74
                hooked: hooked_commands
6034
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6035
74
                proc: unsafe {
6036
74
                    std::mem::transmute::<
6037
74
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6038
74
                        vk::PFN_vkVoidFunction,
6039
74
                    >(Self::get_image_sparse_memory_requirements2)
6040
74
                },
6041
74
            },
6042
74
            VulkanCommand {
6043
74
                name: "vkGetImageSubresourceLayout",
6044
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6045
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageSubresourceLayout),
6046
74
                proc: unsafe {
6047
74
                    std::mem::transmute::<vk::PFN_vkGetImageSubresourceLayout, vk::PFN_vkVoidFunction>(
6048
74
                        Self::get_image_subresource_layout,
6049
74
                    )
6050
74
                },
6051
74
            },
6052
74
            VulkanCommand {
6053
74
                name: "vkGetImageSubresourceLayout2EXT",
6054
74
                features: smallvec![
Feature::Extension(Extension::EXTImageCompressionControl)0
],
6055
74
                hooked: hooked_commands
6056
74
                    .contains(&LayerVulkanCommand::GetImageSubresourceLayout2Ext),
6057
74
                proc: unsafe {
6058
74
                    std::mem::transmute::<
6059
74
                        vk::PFN_vkGetImageSubresourceLayout2EXT,
6060
74
                        vk::PFN_vkVoidFunction,
6061
74
                    >(Self::get_image_subresource_layout2_ext)
6062
74
                },
6063
74
            },
6064
74
            VulkanCommand {
6065
74
                name: "vkGetImageViewAddressNVX",
6066
74
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6067
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewAddressNvx),
6068
74
                proc: unsafe {
6069
74
                    std::mem::transmute::<vk::PFN_vkGetImageViewAddressNVX, vk::PFN_vkVoidFunction>(
6070
74
                        Self::get_image_view_address_nvx,
6071
74
                    )
6072
74
                },
6073
74
            },
6074
74
            VulkanCommand {
6075
74
                name: "vkGetImageViewHandleNVX",
6076
74
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6077
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewHandleNvx),
6078
74
                proc: unsafe {
6079
74
                    std::mem::transmute::<vk::PFN_vkGetImageViewHandleNVX, vk::PFN_vkVoidFunction>(
6080
74
                        Self::get_image_view_handle_nvx,
6081
74
                    )
6082
74
                },
6083
74
            },
6084
74
            VulkanCommand {
6085
74
                name: "vkGetImageViewOpaqueCaptureDescriptorDataEXT",
6086
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6087
74
                hooked: hooked_commands
6088
74
                    .contains(&LayerVulkanCommand::GetImageViewOpaqueCaptureDescriptorDataExt),
6089
74
                proc: unsafe {
6090
74
                    std::mem::transmute::<
6091
74
                        vk::PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT,
6092
74
                        vk::PFN_vkVoidFunction,
6093
74
                    >(Self::get_image_view_opaque_capture_descriptor_data_ext)
6094
74
                },
6095
74
            },
6096
74
            VulkanCommand {
6097
74
                name: "vkGetMemoryAndroidHardwareBufferANDROID",
6098
74
                features: smallvec![Feature::Extension(
6099
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
6100
0
                )],
6101
74
                hooked: hooked_commands
6102
74
                    .contains(&LayerVulkanCommand::GetMemoryAndroidHardwareBufferAndroid),
6103
74
                proc: unsafe {
6104
74
                    std::mem::transmute::<
6105
74
                        vk::PFN_vkGetMemoryAndroidHardwareBufferANDROID,
6106
74
                        vk::PFN_vkVoidFunction,
6107
74
                    >(Self::get_memory_android_hardware_buffer_android)
6108
74
                },
6109
74
            },
6110
74
            VulkanCommand {
6111
74
                name: "vkGetMemoryFdKHR",
6112
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6113
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdKhr),
6114
74
                proc: unsafe {
6115
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdKHR, vk::PFN_vkVoidFunction>(
6116
74
                        Self::get_memory_fd_khr,
6117
74
                    )
6118
74
                },
6119
74
            },
6120
74
            VulkanCommand {
6121
74
                name: "vkGetMemoryFdPropertiesKHR",
6122
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6123
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdPropertiesKhr),
6124
74
                proc: unsafe {
6125
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdPropertiesKHR, vk::PFN_vkVoidFunction>(
6126
74
                        Self::get_memory_fd_properties_khr,
6127
74
                    )
6128
74
                },
6129
74
            },
6130
74
            VulkanCommand {
6131
74
                name: "vkGetMemoryHostPointerPropertiesEXT",
6132
74
                features: smallvec![
Feature::Extension(Extension::EXTExternalMemoryHost)0
],
6133
74
                hooked: hooked_commands
6134
74
                    .contains(&LayerVulkanCommand::GetMemoryHostPointerPropertiesExt),
6135
74
                proc: unsafe {
6136
74
                    std::mem::transmute::<
6137
74
                        vk::PFN_vkGetMemoryHostPointerPropertiesEXT,
6138
74
                        vk::PFN_vkVoidFunction,
6139
74
                    >(Self::get_memory_host_pointer_properties_ext)
6140
74
                },
6141
74
            },
6142
74
            VulkanCommand {
6143
74
                name: "vkGetMemoryRemoteAddressNV",
6144
74
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryRdma)0
],
6145
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryRemoteAddressNv),
6146
74
                proc: unsafe {
6147
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryRemoteAddressNV, vk::PFN_vkVoidFunction>(
6148
74
                        Self::get_memory_remote_address_nv,
6149
74
                    )
6150
74
                },
6151
74
            },
6152
74
            VulkanCommand {
6153
74
                name: "vkGetMemoryWin32HandleKHR",
6154
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6155
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleKhr),
6156
74
                proc: unsafe {
6157
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleKHR, vk::PFN_vkVoidFunction>(
6158
74
                        Self::get_memory_win32_handle_khr,
6159
74
                    )
6160
74
                },
6161
74
            },
6162
74
            VulkanCommand {
6163
74
                name: "vkGetMemoryWin32HandleNV",
6164
74
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryWin32)0
],
6165
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleNv),
6166
74
                proc: unsafe {
6167
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleNV, vk::PFN_vkVoidFunction>(
6168
74
                        Self::get_memory_win32_handle_nv,
6169
74
                    )
6170
74
                },
6171
74
            },
6172
74
            VulkanCommand {
6173
74
                name: "vkGetMemoryWin32HandlePropertiesKHR",
6174
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6175
74
                hooked: hooked_commands
6176
74
                    .contains(&LayerVulkanCommand::GetMemoryWin32HandlePropertiesKhr),
6177
74
                proc: unsafe {
6178
74
                    std::mem::transmute::<
6179
74
                        vk::PFN_vkGetMemoryWin32HandlePropertiesKHR,
6180
74
                        vk::PFN_vkVoidFunction,
6181
74
                    >(Self::get_memory_win32_handle_properties_khr)
6182
74
                },
6183
74
            },
6184
74
            VulkanCommand {
6185
74
                name: "vkGetMemoryZirconHandleFUCHSIA",
6186
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6187
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryZirconHandleFuchsia),
6188
74
                proc: unsafe {
6189
74
                    std::mem::transmute::<
6190
74
                        vk::PFN_vkGetMemoryZirconHandleFUCHSIA,
6191
74
                        vk::PFN_vkVoidFunction,
6192
74
                    >(Self::get_memory_zircon_handle_fuchsia)
6193
74
                },
6194
74
            },
6195
74
            VulkanCommand {
6196
74
                name: "vkGetMemoryZirconHandlePropertiesFUCHSIA",
6197
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6198
74
                hooked: hooked_commands
6199
74
                    .contains(&LayerVulkanCommand::GetMemoryZirconHandlePropertiesFuchsia),
6200
74
                proc: unsafe {
6201
74
                    std::mem::transmute::<
6202
74
                        vk::PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA,
6203
74
                        vk::PFN_vkVoidFunction,
6204
74
                    >(Self::get_memory_zircon_handle_properties_fuchsia)
6205
74
                },
6206
74
            },
6207
74
            VulkanCommand {
6208
74
                name: "vkGetMicromapBuildSizesEXT",
6209
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
6210
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMicromapBuildSizesExt),
6211
74
                proc: unsafe {
6212
74
                    std::mem::transmute::<vk::PFN_vkGetMicromapBuildSizesEXT, vk::PFN_vkVoidFunction>(
6213
74
                        Self::get_micromap_build_sizes_ext,
6214
74
                    )
6215
74
                },
6216
74
            },
6217
74
            VulkanCommand {
6218
74
                name: "vkGetPastPresentationTimingGOOGLE",
6219
74
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6220
74
                hooked: hooked_commands
6221
74
                    .contains(&LayerVulkanCommand::GetPastPresentationTimingGoogle),
6222
74
                proc: unsafe {
6223
74
                    std::mem::transmute::<
6224
74
                        vk::PFN_vkGetPastPresentationTimingGOOGLE,
6225
74
                        vk::PFN_vkVoidFunction,
6226
74
                    >(Self::get_past_presentation_timing_google)
6227
74
                },
6228
74
            },
6229
74
            VulkanCommand {
6230
74
                name: "vkGetPerformanceParameterINTEL",
6231
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6232
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPerformanceParameterIntel),
6233
74
                proc: unsafe {
6234
74
                    std::mem::transmute::<
6235
74
                        vk::PFN_vkGetPerformanceParameterINTEL,
6236
74
                        vk::PFN_vkVoidFunction,
6237
74
                    >(Self::get_performance_parameter_intel)
6238
74
                },
6239
74
            },
6240
74
            VulkanCommand {
6241
74
                name: "vkGetPipelineCacheData",
6242
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6243
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelineCacheData),
6244
74
                proc: unsafe {
6245
74
                    std::mem::transmute::<vk::PFN_vkGetPipelineCacheData, vk::PFN_vkVoidFunction>(
6246
74
                        Self::get_pipeline_cache_data,
6247
74
                    )
6248
74
                },
6249
74
            },
6250
74
            VulkanCommand {
6251
74
                name: "vkGetPipelineExecutableInternalRepresentationsKHR",
6252
74
                features: smallvec![Feature::Extension(
6253
0
                    Extension::KHRPipelineExecutableProperties
6254
0
                )],
6255
74
                hooked: hooked_commands
6256
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutableInternalRepresentationsKhr),
6257
74
                proc: unsafe {
6258
74
                    std::mem::transmute::<
6259
74
                        vk::PFN_vkGetPipelineExecutableInternalRepresentationsKHR,
6260
74
                        vk::PFN_vkVoidFunction,
6261
74
                    >(Self::get_pipeline_executable_internal_representations_khr)
6262
74
                },
6263
74
            },
6264
74
            VulkanCommand {
6265
74
                name: "vkGetPipelineExecutablePropertiesKHR",
6266
74
                features: smallvec![Feature::Extension(
6267
0
                    Extension::KHRPipelineExecutableProperties
6268
0
                )],
6269
74
                hooked: hooked_commands
6270
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutablePropertiesKhr),
6271
74
                proc: unsafe {
6272
74
                    std::mem::transmute::<
6273
74
                        vk::PFN_vkGetPipelineExecutablePropertiesKHR,
6274
74
                        vk::PFN_vkVoidFunction,
6275
74
                    >(Self::get_pipeline_executable_properties_khr)
6276
74
                },
6277
74
            },
6278
74
            VulkanCommand {
6279
74
                name: "vkGetPipelineExecutableStatisticsKHR",
6280
74
                features: smallvec![Feature::Extension(
6281
0
                    Extension::KHRPipelineExecutableProperties
6282
0
                )],
6283
74
                hooked: hooked_commands
6284
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutableStatisticsKhr),
6285
74
                proc: unsafe {
6286
74
                    std::mem::transmute::<
6287
74
                        vk::PFN_vkGetPipelineExecutableStatisticsKHR,
6288
74
                        vk::PFN_vkVoidFunction,
6289
74
                    >(Self::get_pipeline_executable_statistics_khr)
6290
74
                },
6291
74
            },
6292
74
            VulkanCommand {
6293
74
                name: "vkGetPipelinePropertiesEXT",
6294
74
                features: smallvec![
Feature::Extension(Extension::EXTPipelineProperties)0
],
6295
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelinePropertiesExt),
6296
74
                proc: unsafe {
6297
74
                    std::mem::transmute::<vk::PFN_vkGetPipelinePropertiesEXT, vk::PFN_vkVoidFunction>(
6298
74
                        Self::get_pipeline_properties_ext,
6299
74
                    )
6300
74
                },
6301
74
            },
6302
74
            VulkanCommand {
6303
74
                name: "vkGetPrivateData",
6304
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6305
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6306
74
                proc: unsafe {
6307
74
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6308
74
                        Self::get_private_data,
6309
74
                    )
6310
74
                },
6311
74
            },
6312
74
            VulkanCommand {
6313
74
                name: "vkGetPrivateDataEXT",
6314
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
6315
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6316
74
                proc: unsafe {
6317
74
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6318
74
                        Self::get_private_data,
6319
74
                    )
6320
74
                },
6321
74
            },
6322
74
            VulkanCommand {
6323
74
                name: "vkGetQueryPoolResults",
6324
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6325
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueryPoolResults),
6326
74
                proc: unsafe {
6327
74
                    std::mem::transmute::<vk::PFN_vkGetQueryPoolResults, vk::PFN_vkVoidFunction>(
6328
74
                        Self::get_query_pool_results,
6329
74
                    )
6330
74
                },
6331
74
            },
6332
74
            VulkanCommand {
6333
74
                name: "vkGetQueueCheckpointData2NV",
6334
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6335
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointData2Nv),
6336
74
                proc: unsafe {
6337
74
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointData2NV, vk::PFN_vkVoidFunction>(
6338
74
                        Self::get_queue_checkpoint_data2_nv,
6339
74
                    )
6340
74
                },
6341
74
            },
6342
74
            VulkanCommand {
6343
74
                name: "vkGetQueueCheckpointDataNV",
6344
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
6345
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointDataNv),
6346
74
                proc: unsafe {
6347
74
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointDataNV, vk::PFN_vkVoidFunction>(
6348
74
                        Self::get_queue_checkpoint_data_nv,
6349
74
                    )
6350
74
                },
6351
74
            },
6352
74
            VulkanCommand {
6353
74
                name: "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
6354
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6355
74
                hooked: hooked_commands
6356
74
                    .contains(&LayerVulkanCommand::GetRayTracingCaptureReplayShaderGroupHandlesKhr),
6357
74
                proc: unsafe {
6358
74
                    std::mem::transmute::<
6359
74
                        vk::PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR,
6360
74
                        vk::PFN_vkVoidFunction,
6361
74
                    >(
6362
74
                        Self::get_ray_tracing_capture_replay_shader_group_handles_khr
6363
74
                    )
6364
74
                },
6365
74
            },
6366
74
            VulkanCommand {
6367
74
                name: "vkGetRayTracingShaderGroupHandlesKHR",
6368
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6369
74
                hooked: hooked_commands
6370
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6371
74
                proc: unsafe {
6372
74
                    std::mem::transmute::<
6373
74
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6374
74
                        vk::PFN_vkVoidFunction,
6375
74
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6376
74
                },
6377
74
            },
6378
74
            VulkanCommand {
6379
74
                name: "vkGetRayTracingShaderGroupHandlesNV",
6380
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
6381
74
                hooked: hooked_commands
6382
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6383
74
                proc: unsafe {
6384
74
                    std::mem::transmute::<
6385
74
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6386
74
                        vk::PFN_vkVoidFunction,
6387
74
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6388
74
                },
6389
74
            },
6390
74
            VulkanCommand {
6391
74
                name: "vkGetRayTracingShaderGroupStackSizeKHR",
6392
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6393
74
                hooked: hooked_commands
6394
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupStackSizeKhr),
6395
74
                proc: unsafe {
6396
74
                    std::mem::transmute::<
6397
74
                        vk::PFN_vkGetRayTracingShaderGroupStackSizeKHR,
6398
74
                        vk::PFN_vkVoidFunction,
6399
74
                    >(Self::get_ray_tracing_shader_group_stack_size_khr)
6400
74
                },
6401
74
            },
6402
74
            VulkanCommand {
6403
74
                name: "vkGetRefreshCycleDurationGOOGLE",
6404
74
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6405
74
                hooked: hooked_commands
6406
74
                    .contains(&LayerVulkanCommand::GetRefreshCycleDurationGoogle),
6407
74
                proc: unsafe {
6408
74
                    std::mem::transmute::<
6409
74
                        vk::PFN_vkGetRefreshCycleDurationGOOGLE,
6410
74
                        vk::PFN_vkVoidFunction,
6411
74
                    >(Self::get_refresh_cycle_duration_google)
6412
74
                },
6413
74
            },
6414
74
            VulkanCommand {
6415
74
                name: "vkGetRenderAreaGranularity",
6416
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6417
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRenderAreaGranularity),
6418
74
                proc: unsafe {
6419
74
                    std::mem::transmute::<vk::PFN_vkGetRenderAreaGranularity, vk::PFN_vkVoidFunction>(
6420
74
                        Self::get_render_area_granularity,
6421
74
                    )
6422
74
                },
6423
74
            },
6424
74
            VulkanCommand {
6425
74
                name: "vkGetSamplerOpaqueCaptureDescriptorDataEXT",
6426
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6427
74
                hooked: hooked_commands
6428
74
                    .contains(&LayerVulkanCommand::GetSamplerOpaqueCaptureDescriptorDataExt),
6429
74
                proc: unsafe {
6430
74
                    std::mem::transmute::<
6431
74
                        vk::PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT,
6432
74
                        vk::PFN_vkVoidFunction,
6433
74
                    >(Self::get_sampler_opaque_capture_descriptor_data_ext)
6434
74
                },
6435
74
            },
6436
74
            VulkanCommand {
6437
74
                name: "vkGetSemaphoreCounterValue",
6438
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6439
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6440
74
                proc: unsafe {
6441
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6442
74
                        Self::get_semaphore_counter_value,
6443
74
                    )
6444
74
                },
6445
74
            },
6446
74
            VulkanCommand {
6447
74
                name: "vkGetSemaphoreCounterValueKHR",
6448
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
6449
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6450
74
                proc: unsafe {
6451
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6452
74
                        Self::get_semaphore_counter_value,
6453
74
                    )
6454
74
                },
6455
74
            },
6456
74
            VulkanCommand {
6457
74
                name: "vkGetSemaphoreFdKHR",
6458
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6459
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreFdKhr),
6460
74
                proc: unsafe {
6461
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6462
74
                        Self::get_semaphore_fd_khr,
6463
74
                    )
6464
74
                },
6465
74
            },
6466
74
            VulkanCommand {
6467
74
                name: "vkGetSemaphoreWin32HandleKHR",
6468
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6469
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreWin32HandleKhr),
6470
74
                proc: unsafe {
6471
74
                    std::mem::transmute::<
6472
74
                        vk::PFN_vkGetSemaphoreWin32HandleKHR,
6473
74
                        vk::PFN_vkVoidFunction,
6474
74
                    >(Self::get_semaphore_win32_handle_khr)
6475
74
                },
6476
74
            },
6477
74
            VulkanCommand {
6478
74
                name: "vkGetSemaphoreZirconHandleFUCHSIA",
6479
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6480
74
                hooked: hooked_commands
6481
74
                    .contains(&LayerVulkanCommand::GetSemaphoreZirconHandleFuchsia),
6482
74
                proc: unsafe {
6483
74
                    std::mem::transmute::<
6484
74
                        vk::PFN_vkGetSemaphoreZirconHandleFUCHSIA,
6485
74
                        vk::PFN_vkVoidFunction,
6486
74
                    >(Self::get_semaphore_zircon_handle_fuchsia)
6487
74
                },
6488
74
            },
6489
74
            VulkanCommand {
6490
74
                name: "vkGetShaderInfoAMD",
6491
74
                features: smallvec![
Feature::Extension(Extension::AMDShaderInfo)0
],
6492
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderInfoAmd),
6493
74
                proc: unsafe {
6494
74
                    std::mem::transmute::<vk::PFN_vkGetShaderInfoAMD, vk::PFN_vkVoidFunction>(
6495
74
                        Self::get_shader_info_amd,
6496
74
                    )
6497
74
                },
6498
74
            },
6499
74
            VulkanCommand {
6500
74
                name: "vkGetShaderModuleCreateInfoIdentifierEXT",
6501
74
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6502
74
                hooked: hooked_commands
6503
74
                    .contains(&LayerVulkanCommand::GetShaderModuleCreateInfoIdentifierExt),
6504
74
                proc: unsafe {
6505
74
                    std::mem::transmute::<
6506
74
                        vk::PFN_vkGetShaderModuleCreateInfoIdentifierEXT,
6507
74
                        vk::PFN_vkVoidFunction,
6508
74
                    >(Self::get_shader_module_create_info_identifier_ext)
6509
74
                },
6510
74
            },
6511
74
            VulkanCommand {
6512
74
                name: "vkGetShaderModuleIdentifierEXT",
6513
74
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6514
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderModuleIdentifierExt),
6515
74
                proc: unsafe {
6516
74
                    std::mem::transmute::<
6517
74
                        vk::PFN_vkGetShaderModuleIdentifierEXT,
6518
74
                        vk::PFN_vkVoidFunction,
6519
74
                    >(Self::get_shader_module_identifier_ext)
6520
74
                },
6521
74
            },
6522
74
            VulkanCommand {
6523
74
                name: "vkGetSwapchainCounterEXT",
6524
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6525
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainCounterExt),
6526
74
                proc: unsafe {
6527
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainCounterEXT, vk::PFN_vkVoidFunction>(
6528
74
                        Self::get_swapchain_counter_ext,
6529
74
                    )
6530
74
                },
6531
74
            },
6532
74
            VulkanCommand {
6533
74
                name: "vkGetSwapchainGrallocUsage2ANDROID",
6534
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6535
74
                hooked: hooked_commands
6536
74
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsage2Android),
6537
74
                proc: unsafe {
6538
74
                    std::mem::transmute::<
6539
74
                        vk::PFN_vkGetSwapchainGrallocUsage2ANDROID,
6540
74
                        vk::PFN_vkVoidFunction,
6541
74
                    >(Self::get_swapchain_gralloc_usage2_android)
6542
74
                },
6543
74
            },
6544
74
            VulkanCommand {
6545
74
                name: "vkGetSwapchainGrallocUsageANDROID",
6546
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6547
74
                hooked: hooked_commands
6548
74
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsageAndroid),
6549
74
                proc: unsafe {
6550
74
                    std::mem::transmute::<
6551
74
                        vk::PFN_vkGetSwapchainGrallocUsageANDROID,
6552
74
                        vk::PFN_vkVoidFunction,
6553
74
                    >(Self::get_swapchain_gralloc_usage_android)
6554
74
                },
6555
74
            },
6556
74
            VulkanCommand {
6557
74
                name: "vkGetSwapchainImagesKHR",
6558
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6559
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainImagesKhr),
6560
74
                proc: unsafe {
6561
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainImagesKHR, vk::PFN_vkVoidFunction>(
6562
74
                        Self::get_swapchain_images_khr,
6563
74
                    )
6564
74
                },
6565
74
            },
6566
74
            VulkanCommand {
6567
74
                name: "vkGetSwapchainStatusKHR",
6568
74
                features: smallvec![
Feature::Extension(Extension::KHRSharedPresentableImage)0
],
6569
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainStatusKhr),
6570
74
                proc: unsafe {
6571
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainStatusKHR, vk::PFN_vkVoidFunction>(
6572
74
                        Self::get_swapchain_status_khr,
6573
74
                    )
6574
74
                },
6575
74
            },
6576
74
            VulkanCommand {
6577
74
                name: "vkGetValidationCacheDataEXT",
6578
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6579
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetValidationCacheDataExt),
6580
74
                proc: unsafe {
6581
74
                    std::mem::transmute::<vk::PFN_vkGetValidationCacheDataEXT, vk::PFN_vkVoidFunction>(
6582
74
                        Self::get_validation_cache_data_ext,
6583
74
                    )
6584
74
                },
6585
74
            },
6586
74
            VulkanCommand {
6587
74
                name: "vkGetVideoSessionMemoryRequirementsKHR",
6588
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
6589
74
                hooked: hooked_commands
6590
74
                    .contains(&LayerVulkanCommand::GetVideoSessionMemoryRequirementsKhr),
6591
74
                proc: unsafe {
6592
74
                    std::mem::transmute::<
6593
74
                        vk::PFN_vkGetVideoSessionMemoryRequirementsKHR,
6594
74
                        vk::PFN_vkVoidFunction,
6595
74
                    >(Self::get_video_session_memory_requirements_khr)
6596
74
                },
6597
74
            },
6598
74
            VulkanCommand {
6599
74
                name: "vkImportFenceFdKHR",
6600
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
6601
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceFdKhr),
6602
74
                proc: unsafe {
6603
74
                    std::mem::transmute::<vk::PFN_vkImportFenceFdKHR, vk::PFN_vkVoidFunction>(
6604
74
                        Self::import_fence_fd_khr,
6605
74
                    )
6606
74
                },
6607
74
            },
6608
74
            VulkanCommand {
6609
74
                name: "vkImportFenceWin32HandleKHR",
6610
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
6611
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceWin32HandleKhr),
6612
74
                proc: unsafe {
6613
74
                    std::mem::transmute::<vk::PFN_vkImportFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
6614
74
                        Self::import_fence_win32_handle_khr,
6615
74
                    )
6616
74
                },
6617
74
            },
6618
74
            VulkanCommand {
6619
74
                name: "vkImportSemaphoreFdKHR",
6620
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6621
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportSemaphoreFdKhr),
6622
74
                proc: unsafe {
6623
74
                    std::mem::transmute::<vk::PFN_vkImportSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6624
74
                        Self::import_semaphore_fd_khr,
6625
74
                    )
6626
74
                },
6627
74
            },
6628
74
            VulkanCommand {
6629
74
                name: "vkImportSemaphoreWin32HandleKHR",
6630
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6631
74
                hooked: hooked_commands
6632
74
                    .contains(&LayerVulkanCommand::ImportSemaphoreWin32HandleKhr),
6633
74
                proc: unsafe {
6634
74
                    std::mem::transmute::<
6635
74
                        vk::PFN_vkImportSemaphoreWin32HandleKHR,
6636
74
                        vk::PFN_vkVoidFunction,
6637
74
                    >(Self::import_semaphore_win32_handle_khr)
6638
74
                },
6639
74
            },
6640
74
            VulkanCommand {
6641
74
                name: "vkImportSemaphoreZirconHandleFUCHSIA",
6642
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6643
74
                hooked: hooked_commands
6644
74
                    .contains(&LayerVulkanCommand::ImportSemaphoreZirconHandleFuchsia),
6645
74
                proc: unsafe {
6646
74
                    std::mem::transmute::<
6647
74
                        vk::PFN_vkImportSemaphoreZirconHandleFUCHSIA,
6648
74
                        vk::PFN_vkVoidFunction,
6649
74
                    >(Self::import_semaphore_zircon_handle_fuchsia)
6650
74
                },
6651
74
            },
6652
74
            VulkanCommand {
6653
74
                name: "vkInitializePerformanceApiINTEL",
6654
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6655
74
                hooked: hooked_commands
6656
74
                    .contains(&LayerVulkanCommand::InitializePerformanceApiIntel),
6657
74
                proc: unsafe {
6658
74
                    std::mem::transmute::<
6659
74
                        vk::PFN_vkInitializePerformanceApiINTEL,
6660
74
                        vk::PFN_vkVoidFunction,
6661
74
                    >(Self::initialize_performance_api_intel)
6662
74
                },
6663
74
            },
6664
74
            VulkanCommand {
6665
74
                name: "vkInvalidateMappedMemoryRanges",
6666
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6667
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::InvalidateMappedMemoryRanges),
6668
74
                proc: unsafe {
6669
74
                    std::mem::transmute::<
6670
74
                        vk::PFN_vkInvalidateMappedMemoryRanges,
6671
74
                        vk::PFN_vkVoidFunction,
6672
74
                    >(Self::invalidate_mapped_memory_ranges)
6673
74
                },
6674
74
            },
6675
74
            VulkanCommand {
6676
74
                name: "vkMapMemory",
6677
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6678
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MapMemory),
6679
74
                proc: unsafe {
6680
74
                    std::mem::transmute::<vk::PFN_vkMapMemory, vk::PFN_vkVoidFunction>(
6681
74
                        Self::map_memory,
6682
74
                    )
6683
74
                },
6684
74
            },
6685
74
            VulkanCommand {
6686
74
                name: "vkMergePipelineCaches",
6687
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6688
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergePipelineCaches),
6689
74
                proc: unsafe {
6690
74
                    std::mem::transmute::<vk::PFN_vkMergePipelineCaches, vk::PFN_vkVoidFunction>(
6691
74
                        Self::merge_pipeline_caches,
6692
74
                    )
6693
74
                },
6694
74
            },
6695
74
            VulkanCommand {
6696
74
                name: "vkMergeValidationCachesEXT",
6697
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6698
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergeValidationCachesExt),
6699
74
                proc: unsafe {
6700
74
                    std::mem::transmute::<vk::PFN_vkMergeValidationCachesEXT, vk::PFN_vkVoidFunction>(
6701
74
                        Self::merge_validation_caches_ext,
6702
74
                    )
6703
74
                },
6704
74
            },
6705
74
            VulkanCommand {
6706
74
                name: "vkQueueBeginDebugUtilsLabelEXT",
6707
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6708
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBeginDebugUtilsLabelExt),
6709
74
                proc: unsafe {
6710
74
                    std::mem::transmute::<
6711
74
                        vk::PFN_vkQueueBeginDebugUtilsLabelEXT,
6712
74
                        vk::PFN_vkVoidFunction,
6713
74
                    >(Self::queue_begin_debug_utils_label_ext)
6714
74
                },
6715
74
            },
6716
74
            VulkanCommand {
6717
74
                name: "vkQueueBindSparse",
6718
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6719
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBindSparse),
6720
74
                proc: unsafe {
6721
74
                    std::mem::transmute::<vk::PFN_vkQueueBindSparse, vk::PFN_vkVoidFunction>(
6722
74
                        Self::queue_bind_sparse,
6723
74
                    )
6724
74
                },
6725
74
            },
6726
74
            VulkanCommand {
6727
74
                name: "vkQueueEndDebugUtilsLabelEXT",
6728
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6729
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueEndDebugUtilsLabelExt),
6730
74
                proc: unsafe {
6731
74
                    std::mem::transmute::<
6732
74
                        vk::PFN_vkQueueEndDebugUtilsLabelEXT,
6733
74
                        vk::PFN_vkVoidFunction,
6734
74
                    >(Self::queue_end_debug_utils_label_ext)
6735
74
                },
6736
74
            },
6737
74
            VulkanCommand {
6738
74
                name: "vkQueueInsertDebugUtilsLabelEXT",
6739
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6740
74
                hooked: hooked_commands
6741
74
                    .contains(&LayerVulkanCommand::QueueInsertDebugUtilsLabelExt),
6742
74
                proc: unsafe {
6743
74
                    std::mem::transmute::<
6744
74
                        vk::PFN_vkQueueInsertDebugUtilsLabelEXT,
6745
74
                        vk::PFN_vkVoidFunction,
6746
74
                    >(Self::queue_insert_debug_utils_label_ext)
6747
74
                },
6748
74
            },
6749
74
            VulkanCommand {
6750
74
                name: "vkQueuePresentKHR",
6751
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6752
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueuePresentKhr),
6753
74
                proc: unsafe {
6754
74
                    std::mem::transmute::<vk::PFN_vkQueuePresentKHR, vk::PFN_vkVoidFunction>(
6755
74
                        Self::queue_present_khr,
6756
74
                    )
6757
74
                },
6758
74
            },
6759
74
            VulkanCommand {
6760
74
                name: "vkQueueSetPerformanceConfigurationINTEL",
6761
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6762
74
                hooked: hooked_commands
6763
74
                    .contains(&LayerVulkanCommand::QueueSetPerformanceConfigurationIntel),
6764
74
                proc: unsafe {
6765
74
                    std::mem::transmute::<
6766
74
                        vk::PFN_vkQueueSetPerformanceConfigurationINTEL,
6767
74
                        vk::PFN_vkVoidFunction,
6768
74
                    >(Self::queue_set_performance_configuration_intel)
6769
74
                },
6770
74
            },
6771
74
            VulkanCommand {
6772
74
                name: "vkQueueSignalReleaseImageANDROID",
6773
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6774
74
                hooked: hooked_commands
6775
74
                    .contains(&LayerVulkanCommand::QueueSignalReleaseImageAndroid),
6776
74
                proc: unsafe {
6777
74
                    std::mem::transmute::<
6778
74
                        vk::PFN_vkQueueSignalReleaseImageANDROID,
6779
74
                        vk::PFN_vkVoidFunction,
6780
74
                    >(Self::queue_signal_release_image_android)
6781
74
                },
6782
74
            },
6783
74
            VulkanCommand {
6784
74
                name: "vkQueueSubmit",
6785
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6786
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit),
6787
74
                proc: unsafe {
6788
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit, vk::PFN_vkVoidFunction>(
6789
74
                        Self::queue_submit,
6790
74
                    )
6791
74
                },
6792
74
            },
6793
74
            VulkanCommand {
6794
74
                name: "vkQueueSubmit2",
6795
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6796
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6797
74
                proc: unsafe {
6798
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6799
74
                        Self::queue_submit2,
6800
74
                    )
6801
74
                },
6802
74
            },
6803
74
            VulkanCommand {
6804
74
                name: "vkQueueSubmit2KHR",
6805
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6806
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6807
74
                proc: unsafe {
6808
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6809
74
                        Self::queue_submit2,
6810
74
                    )
6811
74
                },
6812
74
            },
6813
74
            VulkanCommand {
6814
74
                name: "vkQueueWaitIdle",
6815
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6816
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueWaitIdle),
6817
74
                proc: unsafe {
6818
74
                    std::mem::transmute::<vk::PFN_vkQueueWaitIdle, vk::PFN_vkVoidFunction>(
6819
74
                        Self::queue_wait_idle,
6820
74
                    )
6821
74
                },
6822
74
            },
6823
74
            VulkanCommand {
6824
74
                name: "vkRegisterDeviceEventEXT",
6825
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6826
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDeviceEventExt),
6827
74
                proc: unsafe {
6828
74
                    std::mem::transmute::<vk::PFN_vkRegisterDeviceEventEXT, vk::PFN_vkVoidFunction>(
6829
74
                        Self::register_device_event_ext,
6830
74
                    )
6831
74
                },
6832
74
            },
6833
74
            VulkanCommand {
6834
74
                name: "vkRegisterDisplayEventEXT",
6835
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6836
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDisplayEventExt),
6837
74
                proc: unsafe {
6838
74
                    std::mem::transmute::<vk::PFN_vkRegisterDisplayEventEXT, vk::PFN_vkVoidFunction>(
6839
74
                        Self::register_display_event_ext,
6840
74
                    )
6841
74
                },
6842
74
            },
6843
74
            VulkanCommand {
6844
74
                name: "vkReleaseFullScreenExclusiveModeEXT",
6845
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
6846
74
                hooked: hooked_commands
6847
74
                    .contains(&LayerVulkanCommand::ReleaseFullScreenExclusiveModeExt),
6848
74
                proc: unsafe {
6849
74
                    std::mem::transmute::<
6850
74
                        vk::PFN_vkReleaseFullScreenExclusiveModeEXT,
6851
74
                        vk::PFN_vkVoidFunction,
6852
74
                    >(Self::release_full_screen_exclusive_mode_ext)
6853
74
                },
6854
74
            },
6855
74
            VulkanCommand {
6856
74
                name: "vkReleasePerformanceConfigurationINTEL",
6857
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6858
74
                hooked: hooked_commands
6859
74
                    .contains(&LayerVulkanCommand::ReleasePerformanceConfigurationIntel),
6860
74
                proc: unsafe {
6861
74
                    std::mem::transmute::<
6862
74
                        vk::PFN_vkReleasePerformanceConfigurationINTEL,
6863
74
                        vk::PFN_vkVoidFunction,
6864
74
                    >(Self::release_performance_configuration_intel)
6865
74
                },
6866
74
            },
6867
74
            VulkanCommand {
6868
74
                name: "vkReleaseProfilingLockKHR",
6869
74
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
6870
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseProfilingLockKhr),
6871
74
                proc: unsafe {
6872
74
                    std::mem::transmute::<vk::PFN_vkReleaseProfilingLockKHR, vk::PFN_vkVoidFunction>(
6873
74
                        Self::release_profiling_lock_khr,
6874
74
                    )
6875
74
                },
6876
74
            },
6877
74
            VulkanCommand {
6878
74
                name: "vkReleaseSwapchainImagesEXT",
6879
74
                features: smallvec![
Feature::Extension(Extension::EXTSwapchainMaintenance1)0
],
6880
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseSwapchainImagesExt),
6881
74
                proc: unsafe {
6882
74
                    std::mem::transmute::<vk::PFN_vkReleaseSwapchainImagesEXT, vk::PFN_vkVoidFunction>(
6883
74
                        Self::release_swapchain_images_ext,
6884
74
                    )
6885
74
                },
6886
74
            },
6887
74
            VulkanCommand {
6888
74
                name: "vkResetCommandBuffer",
6889
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6890
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandBuffer),
6891
74
                proc: unsafe {
6892
74
                    std::mem::transmute::<vk::PFN_vkResetCommandBuffer, vk::PFN_vkVoidFunction>(
6893
74
                        Self::reset_command_buffer,
6894
74
                    )
6895
74
                },
6896
74
            },
6897
74
            VulkanCommand {
6898
74
                name: "vkResetCommandPool",
6899
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6900
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandPool),
6901
74
                proc: unsafe {
6902
74
                    std::mem::transmute::<vk::PFN_vkResetCommandPool, vk::PFN_vkVoidFunction>(
6903
74
                        Self::reset_command_pool,
6904
74
                    )
6905
74
                },
6906
74
            },
6907
74
            VulkanCommand {
6908
74
                name: "vkResetDescriptorPool",
6909
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6910
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetDescriptorPool),
6911
74
                proc: unsafe {
6912
74
                    std::mem::transmute::<vk::PFN_vkResetDescriptorPool, vk::PFN_vkVoidFunction>(
6913
74
                        Self::reset_descriptor_pool,
6914
74
                    )
6915
74
                },
6916
74
            },
6917
74
            VulkanCommand {
6918
74
                name: "vkResetEvent",
6919
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6920
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetEvent),
6921
74
                proc: unsafe {
6922
74
                    std::mem::transmute::<vk::PFN_vkResetEvent, vk::PFN_vkVoidFunction>(
6923
74
                        Self::reset_event,
6924
74
                    )
6925
74
                },
6926
74
            },
6927
74
            VulkanCommand {
6928
74
                name: "vkResetFences",
6929
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6930
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetFences),
6931
74
                proc: unsafe {
6932
74
                    std::mem::transmute::<vk::PFN_vkResetFences, vk::PFN_vkVoidFunction>(
6933
74
                        Self::reset_fences,
6934
74
                    )
6935
74
                },
6936
74
            },
6937
74
            VulkanCommand {
6938
74
                name: "vkResetQueryPool",
6939
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6940
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6941
74
                proc: unsafe {
6942
74
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6943
74
                        Self::reset_query_pool,
6944
74
                    )
6945
74
                },
6946
74
            },
6947
74
            VulkanCommand {
6948
74
                name: "vkResetQueryPoolEXT",
6949
74
                features: smallvec![
Feature::Extension(Extension::EXTHostQueryReset)0
],
6950
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6951
74
                proc: unsafe {
6952
74
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6953
74
                        Self::reset_query_pool,
6954
74
                    )
6955
74
                },
6956
74
            },
6957
74
            VulkanCommand {
6958
74
                name: "vkSetBufferCollectionBufferConstraintsFUCHSIA",
6959
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6960
74
                hooked: hooked_commands
6961
74
                    .contains(&LayerVulkanCommand::SetBufferCollectionBufferConstraintsFuchsia),
6962
74
                proc: unsafe {
6963
74
                    std::mem::transmute::<
6964
74
                        vk::PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA,
6965
74
                        vk::PFN_vkVoidFunction,
6966
74
                    >(Self::set_buffer_collection_buffer_constraints_fuchsia)
6967
74
                },
6968
74
            },
6969
74
            VulkanCommand {
6970
74
                name: "vkSetBufferCollectionImageConstraintsFUCHSIA",
6971
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6972
74
                hooked: hooked_commands
6973
74
                    .contains(&LayerVulkanCommand::SetBufferCollectionImageConstraintsFuchsia),
6974
74
                proc: unsafe {
6975
74
                    std::mem::transmute::<
6976
74
                        vk::PFN_vkSetBufferCollectionImageConstraintsFUCHSIA,
6977
74
                        vk::PFN_vkVoidFunction,
6978
74
                    >(Self::set_buffer_collection_image_constraints_fuchsia)
6979
74
                },
6980
74
            },
6981
74
            VulkanCommand {
6982
74
                name: "vkSetDebugUtilsObjectNameEXT",
6983
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6984
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectNameExt),
6985
74
                proc: unsafe {
6986
74
                    std::mem::transmute::<
6987
74
                        vk::PFN_vkSetDebugUtilsObjectNameEXT,
6988
74
                        vk::PFN_vkVoidFunction,
6989
74
                    >(Self::set_debug_utils_object_name_ext)
6990
74
                },
6991
74
            },
6992
74
            VulkanCommand {
6993
74
                name: "vkSetDebugUtilsObjectTagEXT",
6994
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6995
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectTagExt),
6996
74
                proc: unsafe {
6997
74
                    std::mem::transmute::<vk::PFN_vkSetDebugUtilsObjectTagEXT, vk::PFN_vkVoidFunction>(
6998
74
                        Self::set_debug_utils_object_tag_ext,
6999
74
                    )
7000
74
                },
7001
74
            },
7002
74
            VulkanCommand {
7003
74
                name: "vkSetDeviceMemoryPriorityEXT",
7004
74
                features: smallvec![
Feature::Extension(Extension::EXTPageableDeviceLocalMemory)0
],
7005
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDeviceMemoryPriorityExt),
7006
74
                proc: unsafe {
7007
74
                    std::mem::transmute::<
7008
74
                        vk::PFN_vkSetDeviceMemoryPriorityEXT,
7009
74
                        vk::PFN_vkVoidFunction,
7010
74
                    >(Self::set_device_memory_priority_ext)
7011
74
                },
7012
74
            },
7013
74
            VulkanCommand {
7014
74
                name: "vkSetEvent",
7015
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7016
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetEvent),
7017
74
                proc: unsafe {
7018
74
                    std::mem::transmute::<vk::PFN_vkSetEvent, vk::PFN_vkVoidFunction>(
7019
74
                        Self::set_event,
7020
74
                    )
7021
74
                },
7022
74
            },
7023
74
            VulkanCommand {
7024
74
                name: "vkSetHdrMetadataEXT",
7025
74
                features: smallvec![
Feature::Extension(Extension::EXTHdrMetadata)0
],
7026
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetHdrMetadataExt),
7027
74
                proc: unsafe {
7028
74
                    std::mem::transmute::<vk::PFN_vkSetHdrMetadataEXT, vk::PFN_vkVoidFunction>(
7029
74
                        Self::set_hdr_metadata_ext,
7030
74
                    )
7031
74
                },
7032
74
            },
7033
74
            VulkanCommand {
7034
74
                name: "vkSetLocalDimmingAMD",
7035
74
                features: smallvec![
Feature::Extension(Extension::AMDDisplayNativeHdr)0
],
7036
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetLocalDimmingAmd),
7037
74
                proc: unsafe {
7038
74
                    std::mem::transmute::<vk::PFN_vkSetLocalDimmingAMD, vk::PFN_vkVoidFunction>(
7039
74
                        Self::set_local_dimming_amd,
7040
74
                    )
7041
74
                },
7042
74
            },
7043
74
            VulkanCommand {
7044
74
                name: "vkSetPrivateData",
7045
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
7046
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7047
74
                proc: unsafe {
7048
74
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7049
74
                        Self::set_private_data,
7050
74
                    )
7051
74
                },
7052
74
            },
7053
74
            VulkanCommand {
7054
74
                name: "vkSetPrivateDataEXT",
7055
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
7056
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7057
74
                proc: unsafe {
7058
74
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7059
74
                        Self::set_private_data,
7060
74
                    )
7061
74
                },
7062
74
            },
7063
74
            VulkanCommand {
7064
74
                name: "vkSignalSemaphore",
7065
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7066
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7067
74
                proc: unsafe {
7068
74
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7069
74
                        Self::signal_semaphore,
7070
74
                    )
7071
74
                },
7072
74
            },
7073
74
            VulkanCommand {
7074
74
                name: "vkSignalSemaphoreKHR",
7075
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7076
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7077
74
                proc: unsafe {
7078
74
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7079
74
                        Self::signal_semaphore,
7080
74
                    )
7081
74
                },
7082
74
            },
7083
74
            VulkanCommand {
7084
74
                name: "vkTrimCommandPool",
7085
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7086
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7087
74
                proc: unsafe {
7088
74
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7089
74
                        Self::trim_command_pool,
7090
74
                    )
7091
74
                },
7092
74
            },
7093
74
            VulkanCommand {
7094
74
                name: "vkTrimCommandPoolKHR",
7095
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance1)0
],
7096
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7097
74
                proc: unsafe {
7098
74
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7099
74
                        Self::trim_command_pool,
7100
74
                    )
7101
74
                },
7102
74
            },
7103
74
            VulkanCommand {
7104
74
                name: "vkUninitializePerformanceApiINTEL",
7105
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
7106
74
                hooked: hooked_commands
7107
74
                    .contains(&LayerVulkanCommand::UninitializePerformanceApiIntel),
7108
74
                proc: unsafe {
7109
74
                    std::mem::transmute::<
7110
74
                        vk::PFN_vkUninitializePerformanceApiINTEL,
7111
74
                        vk::PFN_vkVoidFunction,
7112
74
                    >(Self::uninitialize_performance_api_intel)
7113
74
                },
7114
74
            },
7115
74
            VulkanCommand {
7116
74
                name: "vkUnmapMemory",
7117
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7118
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::UnmapMemory),
7119
74
                proc: unsafe {
7120
74
                    std::mem::transmute::<vk::PFN_vkUnmapMemory, vk::PFN_vkVoidFunction>(
7121
74
                        Self::unmap_memory,
7122
74
                    )
7123
74
                },
7124
74
            },
7125
74
            VulkanCommand {
7126
74
                name: "vkUpdateDescriptorSetWithTemplate",
7127
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7128
74
                hooked: hooked_commands
7129
74
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7130
74
                proc: unsafe {
7131
74
                    std::mem::transmute::<
7132
74
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7133
74
                        vk::PFN_vkVoidFunction,
7134
74
                    >(Self::update_descriptor_set_with_template)
7135
74
                },
7136
74
            },
7137
74
            VulkanCommand {
7138
74
                name: "vkUpdateDescriptorSetWithTemplateKHR",
7139
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
7140
74
                hooked: hooked_commands
7141
74
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7142
74
                proc: unsafe {
7143
74
                    std::mem::transmute::<
7144
74
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7145
74
                        vk::PFN_vkVoidFunction,
7146
74
                    >(Self::update_descriptor_set_with_template)
7147
74
                },
7148
74
            },
7149
74
            VulkanCommand {
7150
74
                name: "vkUpdateDescriptorSets",
7151
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7152
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::UpdateDescriptorSets),
7153
74
                proc: unsafe {
7154
74
                    std::mem::transmute::<vk::PFN_vkUpdateDescriptorSets, vk::PFN_vkVoidFunction>(
7155
74
                        Self::update_descriptor_sets,
7156
74
                    )
7157
74
                },
7158
74
            },
7159
74
            VulkanCommand {
7160
74
                name: "vkUpdateVideoSessionParametersKHR",
7161
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7162
74
                hooked: hooked_commands
7163
74
                    .contains(&LayerVulkanCommand::UpdateVideoSessionParametersKhr),
7164
74
                proc: unsafe {
7165
74
                    std::mem::transmute::<
7166
74
                        vk::PFN_vkUpdateVideoSessionParametersKHR,
7167
74
                        vk::PFN_vkVoidFunction,
7168
74
                    >(Self::update_video_session_parameters_khr)
7169
74
                },
7170
74
            },
7171
74
            VulkanCommand {
7172
74
                name: "vkWaitForFences",
7173
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7174
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForFences),
7175
74
                proc: unsafe {
7176
74
                    std::mem::transmute::<vk::PFN_vkWaitForFences, vk::PFN_vkVoidFunction>(
7177
74
                        Self::wait_for_fences,
7178
74
                    )
7179
74
                },
7180
74
            },
7181
74
            VulkanCommand {
7182
74
                name: "vkWaitForPresentKHR",
7183
74
                features: smallvec![
Feature::Extension(Extension::KHRPresentWait)0
],
7184
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForPresentKhr),
7185
74
                proc: unsafe {
7186
74
                    std::mem::transmute::<vk::PFN_vkWaitForPresentKHR, vk::PFN_vkVoidFunction>(
7187
74
                        Self::wait_for_present_khr,
7188
74
                    )
7189
74
                },
7190
74
            },
7191
74
            VulkanCommand {
7192
74
                name: "vkWaitSemaphores",
7193
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7194
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7195
74
                proc: unsafe {
7196
74
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7197
74
                        Self::wait_semaphores,
7198
74
                    )
7199
74
                },
7200
74
            },
7201
74
            VulkanCommand {
7202
74
                name: "vkWaitSemaphoresKHR",
7203
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7204
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7205
74
                proc: unsafe {
7206
74
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7207
74
                        Self::wait_semaphores,
7208
74
                    )
7209
74
                },
7210
74
            },
7211
74
            VulkanCommand {
7212
74
                name: "vkWriteAccelerationStructuresPropertiesKHR",
7213
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
7214
74
                hooked: hooked_commands
7215
74
                    .contains(&LayerVulkanCommand::WriteAccelerationStructuresPropertiesKhr),
7216
74
                proc: unsafe {
7217
74
                    std::mem::transmute::<
7218
74
                        vk::PFN_vkWriteAccelerationStructuresPropertiesKHR,
7219
74
                        vk::PFN_vkVoidFunction,
7220
74
                    >(Self::write_acceleration_structures_properties_khr)
7221
74
                },
7222
74
            },
7223
74
            VulkanCommand {
7224
74
                name: "vkWriteMicromapsPropertiesEXT",
7225
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
7226
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WriteMicromapsPropertiesExt),
7227
74
                proc: unsafe {
7228
74
                    std::mem::transmute::<
7229
74
                        vk::PFN_vkWriteMicromapsPropertiesEXT,
7230
74
                        vk::PFN_vkVoidFunction,
7231
74
                    >(Self::write_micromaps_properties_ext)
7232
74
                },
7233
74
            },
7234
74
        ])
7235
74
    }
7236
51
    pub(crate) fn create_instance_commands(
7237
51
        &self,
7238
51
        instance_info: &T::InstanceInfo,
7239
51
    ) -> Box<[VulkanCommand]> {
7240
51
        let hooked_commands = self
7241
51
            .layer_info
7242
51
            .hooked_instance_commands(instance_info)
7243
51
            .collect::<HashSet<_>>();
7244
51
        Box::new([
7245
51
            VulkanCommand {
7246
51
                name: "vkAcquireDrmDisplayEXT",
7247
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7248
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireDrmDisplayExt),
7249
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_drm_display_ext)},
7250
51
            },
7251
51
            VulkanCommand {
7252
51
                name: "vkAcquireWinrtDisplayNV",
7253
51
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7254
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireWinrtDisplayNv),
7255
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::acquire_winrt_display_nv)},
7256
51
            },
7257
51
            VulkanCommand {
7258
51
                name: "vkAcquireXlibDisplayEXT",
7259
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7260
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireXlibDisplayExt),
7261
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireXlibDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_xlib_display_ext)},
7262
51
            },
7263
51
            VulkanCommand {
7264
51
                name: "vkCreateAndroidSurfaceKHR",
7265
51
                features: smallvec![
Feature::Extension(Extension::KHRAndroidSurface)0
],
7266
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateAndroidSurfaceKhr),
7267
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateAndroidSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_android_surface_khr)},
7268
51
            },
7269
51
            VulkanCommand {
7270
51
                name: "vkCreateDebugReportCallbackEXT",
7271
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7272
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugReportCallbackExt),
7273
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::create_debug_report_callback_ext)},
7274
51
            },
7275
51
            VulkanCommand {
7276
51
                name: "vkCreateDebugUtilsMessengerEXT",
7277
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7278
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugUtilsMessengerExt),
7279
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::create_debug_utils_messenger_ext)},
7280
51
            },
7281
51
            VulkanCommand {
7282
51
                name: "vkCreateDevice",
7283
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7284
                hooked: true,
7285
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDevice, vk::PFN_vkVoidFunction>(Self::create_device)},
7286
51
            },
7287
51
            VulkanCommand {
7288
51
                name: "vkCreateDirectFBSurfaceEXT",
7289
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7290
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDirectFbSurfaceExt),
7291
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDirectFBSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_direct_fb_surface_ext)},
7292
51
            },
7293
51
            VulkanCommand {
7294
51
                name: "vkCreateDisplayModeKHR",
7295
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7296
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayModeKhr),
7297
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayModeKHR, vk::PFN_vkVoidFunction>(Self::create_display_mode_khr)},
7298
51
            },
7299
51
            VulkanCommand {
7300
51
                name: "vkCreateDisplayPlaneSurfaceKHR",
7301
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7302
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayPlaneSurfaceKhr),
7303
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayPlaneSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_display_plane_surface_khr)},
7304
51
            },
7305
51
            VulkanCommand {
7306
51
                name: "vkCreateHeadlessSurfaceEXT",
7307
51
                features: smallvec![
Feature::Extension(Extension::EXTHeadlessSurface)0
],
7308
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateHeadlessSurfaceExt),
7309
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateHeadlessSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_headless_surface_ext)},
7310
51
            },
7311
51
            VulkanCommand {
7312
51
                name: "vkCreateIOSSurfaceMVK",
7313
51
                features: smallvec![
Feature::Extension(Extension::MVKIosSurface)0
],
7314
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateIosSurfaceMvk),
7315
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateIOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_ios_surface_mvk)},
7316
51
            },
7317
51
            VulkanCommand {
7318
51
                name: "vkCreateImagePipeSurfaceFUCHSIA",
7319
51
                features: smallvec![
Feature::Extension(Extension::FUCHSIAImagepipeSurface)0
],
7320
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImagePipeSurfaceFuchsia),
7321
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateImagePipeSurfaceFUCHSIA, vk::PFN_vkVoidFunction>(Self::create_image_pipe_surface_fuchsia)},
7322
51
            },
7323
51
            VulkanCommand {
7324
51
                name: "vkCreateMacOSSurfaceMVK",
7325
51
                features: smallvec![
Feature::Extension(Extension::MVKMacosSurface)0
],
7326
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMacOsSurfaceMvk),
7327
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMacOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_mac_os_surface_mvk)},
7328
51
            },
7329
51
            VulkanCommand {
7330
51
                name: "vkCreateMetalSurfaceEXT",
7331
51
                features: smallvec![
Feature::Extension(Extension::EXTMetalSurface)0
],
7332
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMetalSurfaceExt),
7333
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMetalSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_metal_surface_ext)},
7334
51
            },
7335
51
            VulkanCommand {
7336
51
                name: "vkCreateScreenSurfaceQNX",
7337
51
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7338
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateScreenSurfaceQnx),
7339
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateScreenSurfaceQNX, vk::PFN_vkVoidFunction>(Self::create_screen_surface_qnx)},
7340
51
            },
7341
51
            VulkanCommand {
7342
51
                name: "vkCreateStreamDescriptorSurfaceGGP",
7343
51
                features: smallvec![
Feature::Extension(Extension::GGPStreamDescriptorSurface)0
],
7344
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateStreamDescriptorSurfaceGgp),
7345
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateStreamDescriptorSurfaceGGP, vk::PFN_vkVoidFunction>(Self::create_stream_descriptor_surface_ggp)},
7346
51
            },
7347
51
            VulkanCommand {
7348
51
                name: "vkCreateViSurfaceNN",
7349
51
                features: smallvec![
Feature::Extension(Extension::NNViSurface)0
],
7350
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateViSurfaceNn),
7351
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateViSurfaceNN, vk::PFN_vkVoidFunction>(Self::create_vi_surface_nn)},
7352
51
            },
7353
51
            VulkanCommand {
7354
51
                name: "vkCreateWaylandSurfaceKHR",
7355
51
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7356
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWaylandSurfaceKhr),
7357
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWaylandSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_wayland_surface_khr)},
7358
51
            },
7359
51
            VulkanCommand {
7360
51
                name: "vkCreateWin32SurfaceKHR",
7361
51
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7362
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWin32SurfaceKhr),
7363
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWin32SurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_win32_surface_khr)},
7364
51
            },
7365
51
            VulkanCommand {
7366
51
                name: "vkCreateXcbSurfaceKHR",
7367
51
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7368
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXcbSurfaceKhr),
7369
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXcbSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xcb_surface_khr)},
7370
51
            },
7371
51
            VulkanCommand {
7372
51
                name: "vkCreateXlibSurfaceKHR",
7373
51
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7374
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXlibSurfaceKhr),
7375
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXlibSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xlib_surface_khr)},
7376
51
            },
7377
51
            VulkanCommand {
7378
51
                name: "vkDebugReportMessageEXT",
7379
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7380
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugReportMessageExt),
7381
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDebugReportMessageEXT, vk::PFN_vkVoidFunction>(Self::debug_report_message_ext)},
7382
51
            },
7383
51
            VulkanCommand {
7384
51
                name: "vkDestroyDebugReportCallbackEXT",
7385
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7386
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugReportCallbackExt),
7387
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_report_callback_ext)},
7388
51
            },
7389
51
            VulkanCommand {
7390
51
                name: "vkDestroyDebugUtilsMessengerEXT",
7391
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7392
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugUtilsMessengerExt),
7393
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_utils_messenger_ext)},
7394
51
            },
7395
51
            VulkanCommand {
7396
51
                name: "vkDestroyInstance",
7397
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7398
                hooked: true,
7399
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyInstance, vk::PFN_vkVoidFunction>(Self::destroy_instance)},
7400
51
            },
7401
51
            VulkanCommand {
7402
51
                name: "vkDestroySurfaceKHR",
7403
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7404
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySurfaceKhr),
7405
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroySurfaceKHR, vk::PFN_vkVoidFunction>(Self::destroy_surface_khr)},
7406
51
            },
7407
51
            VulkanCommand {
7408
51
                name: "vkEnumerateDeviceExtensionProperties",
7409
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7410
                hooked: true,
7411
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceExtensionProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_extension_properties)},
7412
51
            },
7413
51
            VulkanCommand {
7414
51
                name: "vkEnumerateDeviceLayerProperties",
7415
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7416
                hooked: true,
7417
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceLayerProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_layer_properties)},
7418
51
            },
7419
51
            VulkanCommand {
7420
51
                name: "vkEnumeratePhysicalDeviceGroups",
7421
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7422
                hooked: true,
7423
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7424
51
            },
7425
51
            VulkanCommand {
7426
51
                name: "vkEnumeratePhysicalDeviceGroupsKHR",
7427
51
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroupCreation)0
],
7428
                hooked: true,
7429
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7430
51
            },
7431
51
            VulkanCommand {
7432
51
                name: "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR",
7433
51
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7434
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKhr),
7435
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_queue_family_performance_query_counters_khr)},
7436
51
            },
7437
51
            VulkanCommand {
7438
51
                name: "vkEnumeratePhysicalDevices",
7439
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7440
                hooked: true,
7441
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDevices, vk::PFN_vkVoidFunction>(Self::enumerate_physical_devices)},
7442
51
            },
7443
51
            VulkanCommand {
7444
51
                name: "vkGetDisplayModeProperties2KHR",
7445
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7446
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModeProperties2Khr),
7447
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModeProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties2_khr)},
7448
51
            },
7449
51
            VulkanCommand {
7450
51
                name: "vkGetDisplayModePropertiesKHR",
7451
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7452
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModePropertiesKhr),
7453
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties_khr)},
7454
51
            },
7455
51
            VulkanCommand {
7456
51
                name: "vkGetDisplayPlaneCapabilities2KHR",
7457
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7458
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilities2Khr),
7459
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities2_khr)},
7460
51
            },
7461
51
            VulkanCommand {
7462
51
                name: "vkGetDisplayPlaneCapabilitiesKHR",
7463
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7464
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilitiesKhr),
7465
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities_khr)},
7466
51
            },
7467
51
            VulkanCommand {
7468
51
                name: "vkGetDisplayPlaneSupportedDisplaysKHR",
7469
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7470
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneSupportedDisplaysKhr),
7471
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneSupportedDisplaysKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_supported_displays_khr)},
7472
51
            },
7473
51
            VulkanCommand {
7474
51
                name: "vkGetDrmDisplayEXT",
7475
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7476
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDrmDisplayExt),
7477
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_drm_display_ext)},
7478
51
            },
7479
51
            VulkanCommand {
7480
51
                name: "vkGetInstanceProcAddr",
7481
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7482
                hooked: true,
7483
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetInstanceProcAddr, vk::PFN_vkVoidFunction>(Self::get_instance_proc_addr)},
7484
51
            },
7485
51
            VulkanCommand {
7486
51
                name: "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT",
7487
51
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
7488
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCalibrateableTimeDomainsExt),
7489
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_calibrateable_time_domains_ext)},
7490
51
            },
7491
51
            VulkanCommand {
7492
51
                name: "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV",
7493
51
                features: smallvec![
Feature::Extension(Extension::NVCooperativeMatrix)0
],
7494
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCooperativeMatrixPropertiesNv),
7495
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_cooperative_matrix_properties_nv)},
7496
51
            },
7497
51
            VulkanCommand {
7498
51
                name: "vkGetPhysicalDeviceDirectFBPresentationSupportEXT",
7499
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7500
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDirectFbPresentationSupportExt),
7501
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_direct_fb_presentation_support_ext)},
7502
51
            },
7503
51
            VulkanCommand {
7504
51
                name: "vkGetPhysicalDeviceDisplayPlaneProperties2KHR",
7505
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7506
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlaneProperties2Khr),
7507
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties2_khr)},
7508
51
            },
7509
51
            VulkanCommand {
7510
51
                name: "vkGetPhysicalDeviceDisplayPlanePropertiesKHR",
7511
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7512
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlanePropertiesKhr),
7513
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties_khr)},
7514
51
            },
7515
51
            VulkanCommand {
7516
51
                name: "vkGetPhysicalDeviceDisplayProperties2KHR",
7517
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7518
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayProperties2Khr),
7519
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties2_khr)},
7520
51
            },
7521
51
            VulkanCommand {
7522
51
                name: "vkGetPhysicalDeviceDisplayPropertiesKHR",
7523
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7524
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPropertiesKhr),
7525
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties_khr)},
7526
51
            },
7527
51
            VulkanCommand {
7528
51
                name: "vkGetPhysicalDeviceExternalBufferProperties",
7529
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7530
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7531
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7532
51
            },
7533
51
            VulkanCommand {
7534
51
                name: "vkGetPhysicalDeviceExternalBufferPropertiesKHR",
7535
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryCapabilities)0
],
7536
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7537
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7538
51
            },
7539
51
            VulkanCommand {
7540
51
                name: "vkGetPhysicalDeviceExternalFenceProperties",
7541
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7542
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7543
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7544
51
            },
7545
51
            VulkanCommand {
7546
51
                name: "vkGetPhysicalDeviceExternalFencePropertiesKHR",
7547
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceCapabilities)0
],
7548
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7549
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7550
51
            },
7551
51
            VulkanCommand {
7552
51
                name: "vkGetPhysicalDeviceExternalImageFormatPropertiesNV",
7553
51
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryCapabilities)0
],
7554
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalImageFormatPropertiesNv),
7555
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_image_format_properties_nv)},
7556
51
            },
7557
51
            VulkanCommand {
7558
51
                name: "vkGetPhysicalDeviceExternalSemaphoreProperties",
7559
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7560
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7561
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7562
51
            },
7563
51
            VulkanCommand {
7564
51
                name: "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
7565
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreCapabilities)0
],
7566
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7567
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7568
51
            },
7569
51
            VulkanCommand {
7570
51
                name: "vkGetPhysicalDeviceFeatures",
7571
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7572
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures),
7573
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures, vk::PFN_vkVoidFunction>(Self::get_physical_device_features)},
7574
51
            },
7575
51
            VulkanCommand {
7576
51
                name: "vkGetPhysicalDeviceFeatures2",
7577
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7578
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7579
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7580
51
            },
7581
51
            VulkanCommand {
7582
51
                name: "vkGetPhysicalDeviceFeatures2KHR",
7583
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7584
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7585
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7586
51
            },
7587
51
            VulkanCommand {
7588
51
                name: "vkGetPhysicalDeviceFormatProperties",
7589
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7590
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties),
7591
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties)},
7592
51
            },
7593
51
            VulkanCommand {
7594
51
                name: "vkGetPhysicalDeviceFormatProperties2",
7595
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7596
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7597
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7598
51
            },
7599
51
            VulkanCommand {
7600
51
                name: "vkGetPhysicalDeviceFormatProperties2KHR",
7601
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7602
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7603
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7604
51
            },
7605
51
            VulkanCommand {
7606
51
                name: "vkGetPhysicalDeviceFragmentShadingRatesKHR",
7607
51
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
7608
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFragmentShadingRatesKhr),
7609
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_fragment_shading_rates_khr)},
7610
51
            },
7611
51
            VulkanCommand {
7612
51
                name: "vkGetPhysicalDeviceImageFormatProperties",
7613
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7614
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties),
7615
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties)},
7616
51
            },
7617
51
            VulkanCommand {
7618
51
                name: "vkGetPhysicalDeviceImageFormatProperties2",
7619
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7620
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7621
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7622
51
            },
7623
51
            VulkanCommand {
7624
51
                name: "vkGetPhysicalDeviceImageFormatProperties2KHR",
7625
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7626
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7627
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7628
51
            },
7629
51
            VulkanCommand {
7630
51
                name: "vkGetPhysicalDeviceMemoryProperties",
7631
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7632
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties),
7633
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties)},
7634
51
            },
7635
51
            VulkanCommand {
7636
51
                name: "vkGetPhysicalDeviceMemoryProperties2",
7637
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7638
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7639
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7640
51
            },
7641
51
            VulkanCommand {
7642
51
                name: "vkGetPhysicalDeviceMemoryProperties2KHR",
7643
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7644
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7645
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7646
51
            },
7647
51
            VulkanCommand {
7648
51
                name: "vkGetPhysicalDeviceMultisamplePropertiesEXT",
7649
51
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
7650
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMultisamplePropertiesExt),
7651
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_multisample_properties_ext)},
7652
51
            },
7653
51
            VulkanCommand {
7654
51
                name: "vkGetPhysicalDeviceOpticalFlowImageFormatsNV",
7655
51
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
7656
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceOpticalFlowImageFormatsNv),
7657
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_optical_flow_image_formats_nv)},
7658
51
            },
7659
51
            VulkanCommand {
7660
51
                name: "vkGetPhysicalDevicePresentRectanglesKHR",
7661
51
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain), Feature::Extension(Extension::KHRDeviceGroup)0
],
7662
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDevicePresentRectanglesKhr),
7663
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDevicePresentRectanglesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_present_rectangles_khr)},
7664
51
            },
7665
51
            VulkanCommand {
7666
51
                name: "vkGetPhysicalDeviceProperties",
7667
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7668
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties),
7669
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties)},
7670
51
            },
7671
51
            VulkanCommand {
7672
51
                name: "vkGetPhysicalDeviceProperties2",
7673
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7674
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7675
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7676
51
            },
7677
51
            VulkanCommand {
7678
51
                name: "vkGetPhysicalDeviceProperties2KHR",
7679
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7680
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7681
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7682
51
            },
7683
51
            VulkanCommand {
7684
51
                name: "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR",
7685
51
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7686
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKhr),
7687
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_performance_query_passes_khr)},
7688
51
            },
7689
51
            VulkanCommand {
7690
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties",
7691
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7692
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties),
7693
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties)},
7694
51
            },
7695
51
            VulkanCommand {
7696
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties2",
7697
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7698
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7699
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7700
51
            },
7701
51
            VulkanCommand {
7702
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties2KHR",
7703
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7704
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7705
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7706
51
            },
7707
51
            VulkanCommand {
7708
51
                name: "vkGetPhysicalDeviceScreenPresentationSupportQNX",
7709
51
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7710
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceScreenPresentationSupportQnx),
7711
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX, vk::PFN_vkVoidFunction>(Self::get_physical_device_screen_presentation_support_qnx)},
7712
51
            },
7713
51
            VulkanCommand {
7714
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties",
7715
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7716
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties),
7717
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties)},
7718
51
            },
7719
51
            VulkanCommand {
7720
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2",
7721
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7722
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7723
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7724
51
            },
7725
51
            VulkanCommand {
7726
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2KHR",
7727
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7728
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7729
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7730
51
            },
7731
51
            VulkanCommand {
7732
51
                name: "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV",
7733
51
                features: smallvec![
Feature::Extension(Extension::NVCoverageReductionMode)0
],
7734
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNv),
7735
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)},
7736
51
            },
7737
51
            VulkanCommand {
7738
51
                name: "vkGetPhysicalDeviceSurfaceCapabilities2EXT",
7739
51
                features: smallvec![
Feature::Extension(Extension::EXTDisplaySurfaceCounter)0
],
7740
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Ext),
7741
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_ext)},
7742
51
            },
7743
51
            VulkanCommand {
7744
51
                name: "vkGetPhysicalDeviceSurfaceCapabilities2KHR",
7745
51
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7746
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Khr),
7747
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_khr)},
7748
51
            },
7749
51
            VulkanCommand {
7750
51
                name: "vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
7751
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7752
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilitiesKhr),
7753
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities_khr)},
7754
51
            },
7755
51
            VulkanCommand {
7756
51
                name: "vkGetPhysicalDeviceSurfaceFormats2KHR",
7757
51
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7758
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormats2Khr),
7759
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormats2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats2_khr)},
7760
51
            },
7761
51
            VulkanCommand {
7762
51
                name: "vkGetPhysicalDeviceSurfaceFormatsKHR",
7763
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7764
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormatsKhr),
7765
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormatsKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats_khr)},
7766
51
            },
7767
51
            VulkanCommand {
7768
51
                name: "vkGetPhysicalDeviceSurfacePresentModes2EXT",
7769
51
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
7770
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModes2Ext),
7771
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes2_ext)},
7772
51
            },
7773
51
            VulkanCommand {
7774
51
                name: "vkGetPhysicalDeviceSurfacePresentModesKHR",
7775
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7776
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModesKhr),
7777
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes_khr)},
7778
51
            },
7779
51
            VulkanCommand {
7780
51
                name: "vkGetPhysicalDeviceSurfaceSupportKHR",
7781
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7782
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceSupportKhr),
7783
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_support_khr)},
7784
51
            },
7785
51
            VulkanCommand {
7786
51
                name: "vkGetPhysicalDeviceToolProperties",
7787
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3})0
],
7788
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7789
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7790
51
            },
7791
51
            VulkanCommand {
7792
51
                name: "vkGetPhysicalDeviceToolPropertiesEXT",
7793
51
                features: smallvec![
Feature::Extension(Extension::EXTToolingInfo)0
],
7794
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7795
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7796
51
            },
7797
51
            VulkanCommand {
7798
51
                name: "vkGetPhysicalDeviceVideoCapabilitiesKHR",
7799
51
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7800
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoCapabilitiesKhr),
7801
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_capabilities_khr)},
7802
51
            },
7803
51
            VulkanCommand {
7804
51
                name: "vkGetPhysicalDeviceVideoFormatPropertiesKHR",
7805
51
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7806
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoFormatPropertiesKhr),
7807
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_format_properties_khr)},
7808
51
            },
7809
51
            VulkanCommand {
7810
51
                name: "vkGetPhysicalDeviceWaylandPresentationSupportKHR",
7811
51
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7812
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWaylandPresentationSupportKhr),
7813
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_wayland_presentation_support_khr)},
7814
51
            },
7815
51
            VulkanCommand {
7816
51
                name: "vkGetPhysicalDeviceWin32PresentationSupportKHR",
7817
51
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7818
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWin32PresentationSupportKhr),
7819
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_win32_presentation_support_khr)},
7820
51
            },
7821
51
            VulkanCommand {
7822
51
                name: "vkGetPhysicalDeviceXcbPresentationSupportKHR",
7823
51
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7824
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXcbPresentationSupportKhr),
7825
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xcb_presentation_support_khr)},
7826
51
            },
7827
51
            VulkanCommand {
7828
51
                name: "vkGetPhysicalDeviceXlibPresentationSupportKHR",
7829
51
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7830
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXlibPresentationSupportKhr),
7831
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xlib_presentation_support_khr)},
7832
51
            },
7833
51
            VulkanCommand {
7834
51
                name: "vkGetRandROutputDisplayEXT",
7835
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7836
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRandROutputDisplayExt),
7837
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetRandROutputDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_rand_r_output_display_ext)},
7838
51
            },
7839
51
            VulkanCommand {
7840
51
                name: "vkGetWinrtDisplayNV",
7841
51
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7842
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetWinrtDisplayNv),
7843
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::get_winrt_display_nv)},
7844
51
            },
7845
51
            VulkanCommand {
7846
51
                name: "vkReleaseDisplayEXT",
7847
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectModeDisplay)0
],
7848
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseDisplayExt),
7849
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkReleaseDisplayEXT, vk::PFN_vkVoidFunction>(Self::release_display_ext)},
7850
51
            },
7851
51
            VulkanCommand {
7852
51
                name: "vkSubmitDebugUtilsMessageEXT",
7853
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7854
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::SubmitDebugUtilsMessageExt),
7855
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkSubmitDebugUtilsMessageEXT, vk::PFN_vkVoidFunction>(Self::submit_debug_utils_message_ext)},
7856
51
            },
7857
51
        ])
7858
51
    }
7859
0
    extern "system" fn get_physical_device_features(
7860
0
        physical_device: vk::PhysicalDevice,
7861
0
        p_features: *mut vk::PhysicalDeviceFeatures,
7862
0
    ) {
7863
0
        let global = Self::instance();
7864
0
        // vkGetPhysicalDeviceFeatures
7865
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7866
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7867
0
        let layer_result = instance_info
7868
0
            .customized_info
7869
0
            .borrow()
7870
0
            .hooks()
7871
0
            .get_physical_device_features(physical_device, unsafe { p_features.as_mut() }.unwrap());
7872
0
        match layer_result {
7873
0
            LayerResult::Handled(res) => res,
7874
            LayerResult::Unhandled => unsafe {
7875
0
                (dispatch_table.get_physical_device_features)(physical_device, p_features)
7876
            },
7877
        }
7878
0
    }
7879
0
    extern "system" fn get_physical_device_format_properties(
7880
0
        physical_device: vk::PhysicalDevice,
7881
0
        format: vk::Format,
7882
0
        p_format_properties: *mut vk::FormatProperties,
7883
0
    ) {
7884
0
        let global = Self::instance();
7885
0
        // vkGetPhysicalDeviceFormatProperties
7886
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7887
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7888
0
        let layer_result = instance_info
7889
0
            .customized_info
7890
0
            .borrow()
7891
0
            .hooks()
7892
0
            .get_physical_device_format_properties(
7893
0
                physical_device,
7894
0
                format,
7895
0
                unsafe { p_format_properties.as_mut() }.unwrap(),
7896
0
            );
7897
0
        match layer_result {
7898
0
            LayerResult::Handled(res) => res,
7899
            LayerResult::Unhandled => unsafe {
7900
0
                (dispatch_table.get_physical_device_format_properties)(
7901
0
                    physical_device,
7902
0
                    format,
7903
0
                    p_format_properties,
7904
0
                )
7905
            },
7906
        }
7907
0
    }
7908
0
    extern "system" fn get_physical_device_image_format_properties(
7909
0
        physical_device: vk::PhysicalDevice,
7910
0
        format: vk::Format,
7911
0
        _type: vk::ImageType,
7912
0
        tiling: vk::ImageTiling,
7913
0
        usage: vk::ImageUsageFlags,
7914
0
        flags: vk::ImageCreateFlags,
7915
0
        p_image_format_properties: *mut vk::ImageFormatProperties,
7916
0
    ) -> vk::Result {
7917
0
        let global = Self::instance();
7918
0
        // vkGetPhysicalDeviceImageFormatProperties
7919
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7920
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7921
0
        let layer_result = instance_info
7922
0
            .customized_info
7923
0
            .borrow()
7924
0
            .hooks()
7925
0
            .get_physical_device_image_format_properties(
7926
0
                physical_device,
7927
0
                format,
7928
0
                _type,
7929
0
                tiling,
7930
0
                usage,
7931
0
                flags,
7932
0
                unsafe { p_image_format_properties.as_mut() }.unwrap(),
7933
0
            );
7934
0
        match layer_result {
7935
0
            LayerResult::Handled(res) => match res {
7936
0
                Ok(()) => vk::Result::SUCCESS,
7937
0
                Err(e) => e,
7938
            },
7939
            LayerResult::Unhandled => unsafe {
7940
0
                (dispatch_table.get_physical_device_image_format_properties)(
7941
0
                    physical_device,
7942
0
                    format,
7943
0
                    _type,
7944
0
                    tiling,
7945
0
                    usage,
7946
0
                    flags,
7947
0
                    p_image_format_properties,
7948
0
                )
7949
            },
7950
        }
7951
0
    }
7952
0
    extern "system" fn get_physical_device_properties(
7953
0
        physical_device: vk::PhysicalDevice,
7954
0
        p_properties: *mut vk::PhysicalDeviceProperties,
7955
0
    ) {
7956
0
        let global = Self::instance();
7957
0
        // vkGetPhysicalDeviceProperties
7958
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7959
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7960
0
        let layer_result = instance_info
7961
0
            .customized_info
7962
0
            .borrow()
7963
0
            .hooks()
7964
0
            .get_physical_device_properties(
7965
0
                physical_device,
7966
0
                unsafe { p_properties.as_mut() }.unwrap(),
7967
0
            );
7968
0
        match layer_result {
7969
0
            LayerResult::Handled(res) => res,
7970
            LayerResult::Unhandled => unsafe {
7971
0
                (dispatch_table.get_physical_device_properties)(physical_device, p_properties)
7972
            },
7973
        }
7974
0
    }
7975
0
    extern "system" fn get_physical_device_queue_family_properties(
7976
0
        physical_device: vk::PhysicalDevice,
7977
0
        p_queue_family_property_count: *mut u32,
7978
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties,
7979
0
    ) {
7980
0
        let global = Self::instance();
7981
0
        // vkGetPhysicalDeviceQueueFamilyProperties
7982
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7983
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7984
        #[allow(clippy::unnecessary_cast)]
7985
0
        let layer_result = instance_info
7986
0
            .customized_info
7987
0
            .borrow()
7988
0
            .hooks()
7989
0
            .get_physical_device_queue_family_properties(
7990
0
                physical_device,
7991
0
                if p_queue_family_properties.is_null() {
7992
0
                    None
7993
                } else {
7994
0
                    Some(unsafe {
7995
0
                        std::slice::from_raw_parts_mut(
7996
0
                            p_queue_family_properties,
7997
0
                            *unsafe { p_queue_family_property_count.as_ref() }.unwrap() as usize,
7998
0
                        )
7999
0
                    })
8000
                },
8001
            );
8002
0
        match layer_result {
8003
0
            LayerResult::Handled(res) => res,
8004
            LayerResult::Unhandled => unsafe {
8005
0
                (dispatch_table.get_physical_device_queue_family_properties)(
8006
0
                    physical_device,
8007
0
                    p_queue_family_property_count,
8008
0
                    p_queue_family_properties,
8009
0
                )
8010
            },
8011
        }
8012
0
    }
8013
0
    extern "system" fn get_physical_device_memory_properties(
8014
0
        physical_device: vk::PhysicalDevice,
8015
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties,
8016
0
    ) {
8017
0
        let global = Self::instance();
8018
0
        // vkGetPhysicalDeviceMemoryProperties
8019
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8020
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8021
0
        let layer_result = instance_info
8022
0
            .customized_info
8023
0
            .borrow()
8024
0
            .hooks()
8025
0
            .get_physical_device_memory_properties(
8026
0
                physical_device,
8027
0
                unsafe { p_memory_properties.as_mut() }.unwrap(),
8028
0
            );
8029
0
        match layer_result {
8030
0
            LayerResult::Handled(res) => res,
8031
            LayerResult::Unhandled => unsafe {
8032
0
                (dispatch_table.get_physical_device_memory_properties)(
8033
0
                    physical_device,
8034
0
                    p_memory_properties,
8035
0
                )
8036
            },
8037
        }
8038
0
    }
8039
0
    extern "system" fn get_physical_device_sparse_image_format_properties(
8040
0
        physical_device: vk::PhysicalDevice,
8041
0
        format: vk::Format,
8042
0
        _type: vk::ImageType,
8043
0
        samples: vk::SampleCountFlags,
8044
0
        usage: vk::ImageUsageFlags,
8045
0
        tiling: vk::ImageTiling,
8046
0
        p_property_count: *mut u32,
8047
0
        p_properties: *mut vk::SparseImageFormatProperties,
8048
0
    ) {
8049
0
        let global = Self::instance();
8050
0
        // vkGetPhysicalDeviceSparseImageFormatProperties
8051
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8052
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8053
        #[allow(clippy::unnecessary_cast)]
8054
0
        let layer_result = instance_info
8055
0
            .customized_info
8056
0
            .borrow()
8057
0
            .hooks()
8058
0
            .get_physical_device_sparse_image_format_properties(
8059
0
                physical_device,
8060
0
                format,
8061
0
                _type,
8062
0
                samples,
8063
0
                usage,
8064
0
                tiling,
8065
0
                if p_properties.is_null() {
8066
0
                    None
8067
                } else {
8068
0
                    Some(unsafe {
8069
0
                        std::slice::from_raw_parts_mut(
8070
0
                            p_properties,
8071
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
8072
0
                        )
8073
0
                    })
8074
                },
8075
            );
8076
0
        match layer_result {
8077
0
            LayerResult::Handled(res) => res,
8078
            LayerResult::Unhandled => unsafe {
8079
0
                (dispatch_table.get_physical_device_sparse_image_format_properties)(
8080
0
                    physical_device,
8081
0
                    format,
8082
0
                    _type,
8083
0
                    samples,
8084
0
                    usage,
8085
0
                    tiling,
8086
0
                    p_property_count,
8087
0
                    p_properties,
8088
0
                )
8089
            },
8090
        }
8091
0
    }
8092
0
    extern "system" fn get_physical_device_features2(
8093
0
        physical_device: vk::PhysicalDevice,
8094
0
        p_features: *mut vk::PhysicalDeviceFeatures2,
8095
0
    ) {
8096
0
        let global = Self::instance();
8097
0
        // vkGetPhysicalDeviceFeatures2
8098
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8099
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8100
0
        let layer_result = instance_info
8101
0
            .customized_info
8102
0
            .borrow()
8103
0
            .hooks()
8104
0
            .get_physical_device_features2(
8105
0
                physical_device,
8106
0
                unsafe { p_features.as_mut() }.unwrap(),
8107
0
            );
8108
0
        match layer_result {
8109
0
            LayerResult::Handled(res) => res,
8110
            LayerResult::Unhandled => unsafe {
8111
0
                (dispatch_table.get_physical_device_features2)(physical_device, p_features)
8112
            },
8113
        }
8114
0
    }
8115
0
    extern "system" fn get_physical_device_properties2(
8116
0
        physical_device: vk::PhysicalDevice,
8117
0
        p_properties: *mut vk::PhysicalDeviceProperties2,
8118
0
    ) {
8119
0
        let global = Self::instance();
8120
0
        // vkGetPhysicalDeviceProperties2
8121
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8122
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8123
0
        let layer_result = instance_info
8124
0
            .customized_info
8125
0
            .borrow()
8126
0
            .hooks()
8127
0
            .get_physical_device_properties2(
8128
0
                physical_device,
8129
0
                unsafe { p_properties.as_mut() }.unwrap(),
8130
0
            );
8131
0
        match layer_result {
8132
0
            LayerResult::Handled(res) => res,
8133
            LayerResult::Unhandled => unsafe {
8134
0
                (dispatch_table.get_physical_device_properties2)(physical_device, p_properties)
8135
            },
8136
        }
8137
0
    }
8138
0
    extern "system" fn get_physical_device_format_properties2(
8139
0
        physical_device: vk::PhysicalDevice,
8140
0
        format: vk::Format,
8141
0
        p_format_properties: *mut vk::FormatProperties2,
8142
0
    ) {
8143
0
        let global = Self::instance();
8144
0
        // vkGetPhysicalDeviceFormatProperties2
8145
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8146
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8147
0
        let layer_result = instance_info
8148
0
            .customized_info
8149
0
            .borrow()
8150
0
            .hooks()
8151
0
            .get_physical_device_format_properties2(
8152
0
                physical_device,
8153
0
                format,
8154
0
                unsafe { p_format_properties.as_mut() }.unwrap(),
8155
0
            );
8156
0
        match layer_result {
8157
0
            LayerResult::Handled(res) => res,
8158
            LayerResult::Unhandled => unsafe {
8159
0
                (dispatch_table.get_physical_device_format_properties2)(
8160
0
                    physical_device,
8161
0
                    format,
8162
0
                    p_format_properties,
8163
0
                )
8164
            },
8165
        }
8166
0
    }
8167
0
    extern "system" fn get_physical_device_image_format_properties2(
8168
0
        physical_device: vk::PhysicalDevice,
8169
0
        p_image_format_info: *const vk::PhysicalDeviceImageFormatInfo2,
8170
0
        p_image_format_properties: *mut vk::ImageFormatProperties2,
8171
0
    ) -> vk::Result {
8172
0
        let global = Self::instance();
8173
0
        // vkGetPhysicalDeviceImageFormatProperties2
8174
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8175
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8176
0
        let layer_result = instance_info
8177
0
            .customized_info
8178
0
            .borrow()
8179
0
            .hooks()
8180
0
            .get_physical_device_image_format_properties2(
8181
0
                physical_device,
8182
0
                unsafe { p_image_format_info.as_ref() }.unwrap(),
8183
0
                unsafe { p_image_format_properties.as_mut() }.unwrap(),
8184
0
            );
8185
0
        match layer_result {
8186
0
            LayerResult::Handled(res) => match res {
8187
0
                Ok(()) => vk::Result::SUCCESS,
8188
0
                Err(e) => e,
8189
            },
8190
            LayerResult::Unhandled => unsafe {
8191
0
                (dispatch_table.get_physical_device_image_format_properties2)(
8192
0
                    physical_device,
8193
0
                    p_image_format_info,
8194
0
                    p_image_format_properties,
8195
0
                )
8196
            },
8197
        }
8198
0
    }
8199
0
    extern "system" fn get_physical_device_queue_family_properties2(
8200
0
        physical_device: vk::PhysicalDevice,
8201
0
        p_queue_family_property_count: *mut u32,
8202
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties2,
8203
0
    ) {
8204
0
        let global = Self::instance();
8205
0
        // vkGetPhysicalDeviceQueueFamilyProperties2
8206
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8207
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8208
        #[allow(clippy::unnecessary_cast)]
8209
0
        let layer_result = instance_info
8210
0
            .customized_info
8211
0
            .borrow()
8212
0
            .hooks()
8213
0
            .get_physical_device_queue_family_properties2(
8214
0
                physical_device,
8215
0
                if p_queue_family_properties.is_null() {
8216
0
                    None
8217
                } else {
8218
0
                    Some(unsafe {
8219
0
                        std::slice::from_raw_parts_mut(
8220
0
                            p_queue_family_properties,
8221
0
                            *unsafe { p_queue_family_property_count.as_ref() }.unwrap() as usize,
8222
0
                        )
8223
0
                    })
8224
                },
8225
            );
8226
0
        match layer_result {
8227
0
            LayerResult::Handled(res) => res,
8228
            LayerResult::Unhandled => unsafe {
8229
0
                (dispatch_table.get_physical_device_queue_family_properties2)(
8230
0
                    physical_device,
8231
0
                    p_queue_family_property_count,
8232
0
                    p_queue_family_properties,
8233
0
                )
8234
            },
8235
        }
8236
0
    }
8237
0
    extern "system" fn get_physical_device_memory_properties2(
8238
0
        physical_device: vk::PhysicalDevice,
8239
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties2,
8240
0
    ) {
8241
0
        let global = Self::instance();
8242
0
        // vkGetPhysicalDeviceMemoryProperties2
8243
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8244
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8245
0
        let layer_result = instance_info
8246
0
            .customized_info
8247
0
            .borrow()
8248
0
            .hooks()
8249
0
            .get_physical_device_memory_properties2(
8250
0
                physical_device,
8251
0
                unsafe { p_memory_properties.as_mut() }.unwrap(),
8252
0
            );
8253
0
        match layer_result {
8254
0
            LayerResult::Handled(res) => res,
8255
            LayerResult::Unhandled => unsafe {
8256
0
                (dispatch_table.get_physical_device_memory_properties2)(
8257
0
                    physical_device,
8258
0
                    p_memory_properties,
8259
0
                )
8260
            },
8261
        }
8262
0
    }
8263
0
    extern "system" fn get_physical_device_sparse_image_format_properties2(
8264
0
        physical_device: vk::PhysicalDevice,
8265
0
        p_format_info: *const vk::PhysicalDeviceSparseImageFormatInfo2,
8266
0
        p_property_count: *mut u32,
8267
0
        p_properties: *mut vk::SparseImageFormatProperties2,
8268
0
    ) {
8269
0
        let global = Self::instance();
8270
0
        // vkGetPhysicalDeviceSparseImageFormatProperties2
8271
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8272
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8273
        #[allow(clippy::unnecessary_cast)]
8274
0
        let layer_result = instance_info
8275
0
            .customized_info
8276
0
            .borrow()
8277
0
            .hooks()
8278
0
            .get_physical_device_sparse_image_format_properties2(
8279
0
                physical_device,
8280
0
                unsafe { p_format_info.as_ref() }.unwrap(),
8281
0
                if p_properties.is_null() {
8282
0
                    None
8283
                } else {
8284
0
                    Some(unsafe {
8285
0
                        std::slice::from_raw_parts_mut(
8286
0
                            p_properties,
8287
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
8288
0
                        )
8289
0
                    })
8290
                },
8291
            );
8292
0
        match layer_result {
8293
0
            LayerResult::Handled(res) => res,
8294
            LayerResult::Unhandled => unsafe {
8295
0
                (dispatch_table.get_physical_device_sparse_image_format_properties2)(
8296
0
                    physical_device,
8297
0
                    p_format_info,
8298
0
                    p_property_count,
8299
0
                    p_properties,
8300
0
                )
8301
            },
8302
        }
8303
0
    }
8304
0
    extern "system" fn get_physical_device_external_buffer_properties(
8305
0
        physical_device: vk::PhysicalDevice,
8306
0
        p_external_buffer_info: *const vk::PhysicalDeviceExternalBufferInfo,
8307
0
        p_external_buffer_properties: *mut vk::ExternalBufferProperties,
8308
0
    ) {
8309
0
        let global = Self::instance();
8310
0
        // vkGetPhysicalDeviceExternalBufferProperties
8311
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8312
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8313
0
        let layer_result = instance_info
8314
0
            .customized_info
8315
0
            .borrow()
8316
0
            .hooks()
8317
0
            .get_physical_device_external_buffer_properties(
8318
0
                physical_device,
8319
0
                unsafe { p_external_buffer_info.as_ref() }.unwrap(),
8320
0
                unsafe { p_external_buffer_properties.as_mut() }.unwrap(),
8321
0
            );
8322
0
        match layer_result {
8323
0
            LayerResult::Handled(res) => res,
8324
            LayerResult::Unhandled => unsafe {
8325
0
                (dispatch_table.get_physical_device_external_buffer_properties)(
8326
0
                    physical_device,
8327
0
                    p_external_buffer_info,
8328
0
                    p_external_buffer_properties,
8329
0
                )
8330
            },
8331
        }
8332
0
    }
8333
0
    extern "system" fn get_physical_device_external_fence_properties(
8334
0
        physical_device: vk::PhysicalDevice,
8335
0
        p_external_fence_info: *const vk::PhysicalDeviceExternalFenceInfo,
8336
0
        p_external_fence_properties: *mut vk::ExternalFenceProperties,
8337
0
    ) {
8338
0
        let global = Self::instance();
8339
0
        // vkGetPhysicalDeviceExternalFenceProperties
8340
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8341
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8342
0
        let layer_result = instance_info
8343
0
            .customized_info
8344
0
            .borrow()
8345
0
            .hooks()
8346
0
            .get_physical_device_external_fence_properties(
8347
0
                physical_device,
8348
0
                unsafe { p_external_fence_info.as_ref() }.unwrap(),
8349
0
                unsafe { p_external_fence_properties.as_mut() }.unwrap(),
8350
0
            );
8351
0
        match layer_result {
8352
0
            LayerResult::Handled(res) => res,
8353
            LayerResult::Unhandled => unsafe {
8354
0
                (dispatch_table.get_physical_device_external_fence_properties)(
8355
0
                    physical_device,
8356
0
                    p_external_fence_info,
8357
0
                    p_external_fence_properties,
8358
0
                )
8359
            },
8360
        }
8361
0
    }
8362
0
    extern "system" fn get_physical_device_external_semaphore_properties(
8363
0
        physical_device: vk::PhysicalDevice,
8364
0
        p_external_semaphore_info: *const vk::PhysicalDeviceExternalSemaphoreInfo,
8365
0
        p_external_semaphore_properties: *mut vk::ExternalSemaphoreProperties,
8366
0
    ) {
8367
0
        let global = Self::instance();
8368
0
        // vkGetPhysicalDeviceExternalSemaphoreProperties
8369
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8370
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8371
0
        let layer_result = instance_info
8372
0
            .customized_info
8373
0
            .borrow()
8374
0
            .hooks()
8375
0
            .get_physical_device_external_semaphore_properties(
8376
0
                physical_device,
8377
0
                unsafe { p_external_semaphore_info.as_ref() }.unwrap(),
8378
0
                unsafe { p_external_semaphore_properties.as_mut() }.unwrap(),
8379
0
            );
8380
0
        match layer_result {
8381
0
            LayerResult::Handled(res) => res,
8382
            LayerResult::Unhandled => unsafe {
8383
0
                (dispatch_table.get_physical_device_external_semaphore_properties)(
8384
0
                    physical_device,
8385
0
                    p_external_semaphore_info,
8386
0
                    p_external_semaphore_properties,
8387
0
                )
8388
            },
8389
        }
8390
0
    }
8391
0
    extern "system" fn get_physical_device_tool_properties(
8392
0
        physical_device: vk::PhysicalDevice,
8393
0
        p_tool_count: *mut u32,
8394
0
        p_tool_properties: *mut vk::PhysicalDeviceToolProperties,
8395
0
    ) -> vk::Result {
8396
0
        let global = Self::instance();
8397
0
        // vkGetPhysicalDeviceToolProperties
8398
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8399
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_3();
8400
        #[allow(clippy::unnecessary_cast)]
8401
0
        let layer_result = instance_info
8402
0
            .customized_info
8403
0
            .borrow()
8404
0
            .hooks()
8405
0
            .get_physical_device_tool_properties(
8406
0
                physical_device,
8407
0
                if p_tool_properties.is_null() {
8408
0
                    None
8409
                } else {
8410
0
                    Some(unsafe {
8411
0
                        std::slice::from_raw_parts_mut(
8412
0
                            p_tool_properties,
8413
0
                            *unsafe { p_tool_count.as_ref() }.unwrap() as usize,
8414
0
                        )
8415
0
                    })
8416
                },
8417
            );
8418
0
        match layer_result {
8419
0
            LayerResult::Handled(res) => match res {
8420
0
                Ok(()) => vk::Result::SUCCESS,
8421
0
                Err(e) => e,
8422
            },
8423
            LayerResult::Unhandled => unsafe {
8424
0
                (dispatch_table.get_physical_device_tool_properties)(
8425
0
                    physical_device,
8426
0
                    p_tool_count,
8427
0
                    p_tool_properties,
8428
0
                )
8429
            },
8430
        }
8431
0
    }
8432
1
    extern "system" fn destroy_surface_khr(
8433
1
        instance: vk::Instance,
8434
1
        surface: vk::SurfaceKHR,
8435
1
        p_allocator: *const vk::AllocationCallbacks,
8436
1
    ) {
8437
1
        let global = Self::instance();
8438
1
        // vkDestroySurfaceKHR
8439
1
        let instance_info = global.get_instance_info(instance).unwrap();
8440
1
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8441
1
        let layer_result = instance_info
8442
1
            .customized_info
8443
1
            .borrow()
8444
1
            .hooks()
8445
1
            .destroy_surface_khr(surface, unsafe { p_allocator.as_ref() });
8446
1
        match layer_result {
8447
0
            LayerResult::Handled(res) => res,
8448
            LayerResult::Unhandled => unsafe {
8449
1
                (dispatch_table.destroy_surface_khr)(instance, surface, p_allocator)
8450
            },
8451
        }
8452
1
    }
8453
0
    extern "system" fn get_physical_device_surface_support_khr(
8454
0
        physical_device: vk::PhysicalDevice,
8455
0
        queue_family_index: u32,
8456
0
        surface: vk::SurfaceKHR,
8457
0
        p_supported: *mut vk::Bool32,
8458
0
    ) -> vk::Result {
8459
0
        let global = Self::instance();
8460
0
        // vkGetPhysicalDeviceSurfaceSupportKHR
8461
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8462
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8463
0
        let layer_result = instance_info
8464
0
            .customized_info
8465
0
            .borrow()
8466
0
            .hooks()
8467
0
            .get_physical_device_surface_support_khr(physical_device, queue_family_index, surface);
8468
0
        match layer_result {
8469
0
            LayerResult::Handled(res) => match res {
8470
0
                Ok(res) => {
8471
0
                    *unsafe { p_supported.as_mut() }.unwrap() =
8472
0
                        if res { vk::TRUE } else { vk::FALSE };
8473
0
                    vk::Result::SUCCESS
8474
                }
8475
0
                Err(e) => e,
8476
            },
8477
            LayerResult::Unhandled => unsafe {
8478
0
                (dispatch_table.get_physical_device_surface_support_khr)(
8479
0
                    physical_device,
8480
0
                    queue_family_index,
8481
0
                    surface,
8482
0
                    p_supported,
8483
0
                )
8484
            },
8485
        }
8486
0
    }
8487
0
    extern "system" fn get_physical_device_surface_capabilities_khr(
8488
0
        physical_device: vk::PhysicalDevice,
8489
0
        surface: vk::SurfaceKHR,
8490
0
        p_surface_capabilities: *mut vk::SurfaceCapabilitiesKHR,
8491
0
    ) -> vk::Result {
8492
0
        let global = Self::instance();
8493
0
        // vkGetPhysicalDeviceSurfaceCapabilitiesKHR
8494
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8495
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8496
0
        let layer_result = instance_info
8497
0
            .customized_info
8498
0
            .borrow()
8499
0
            .hooks()
8500
0
            .get_physical_device_surface_capabilities_khr(
8501
0
                physical_device,
8502
0
                surface,
8503
0
                unsafe { p_surface_capabilities.as_mut() }.unwrap(),
8504
0
            );
8505
0
        match layer_result {
8506
0
            LayerResult::Handled(res) => match res {
8507
0
                Ok(()) => vk::Result::SUCCESS,
8508
0
                Err(e) => e,
8509
            },
8510
            LayerResult::Unhandled => unsafe {
8511
0
                (dispatch_table.get_physical_device_surface_capabilities_khr)(
8512
0
                    physical_device,
8513
0
                    surface,
8514
0
                    p_surface_capabilities,
8515
0
                )
8516
            },
8517
        }
8518
0
    }
8519
0
    extern "system" fn get_physical_device_surface_formats_khr(
8520
0
        physical_device: vk::PhysicalDevice,
8521
0
        surface: vk::SurfaceKHR,
8522
0
        p_surface_format_count: *mut u32,
8523
0
        p_surface_formats: *mut vk::SurfaceFormatKHR,
8524
0
    ) -> vk::Result {
8525
0
        let global = Self::instance();
8526
0
        // vkGetPhysicalDeviceSurfaceFormatsKHR
8527
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8528
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8529
        #[allow(clippy::unnecessary_cast)]
8530
0
        let layer_result = instance_info
8531
0
            .customized_info
8532
0
            .borrow()
8533
0
            .hooks()
8534
0
            .get_physical_device_surface_formats_khr(
8535
0
                physical_device,
8536
0
                surface,
8537
0
                if p_surface_formats.is_null() {
8538
0
                    None
8539
                } else {
8540
0
                    Some(unsafe {
8541
0
                        std::slice::from_raw_parts_mut(
8542
0
                            p_surface_formats,
8543
0
                            *unsafe { p_surface_format_count.as_ref() }.unwrap() as usize,
8544
0
                        )
8545
0
                    })
8546
                },
8547
            );
8548
0
        match layer_result {
8549
0
            LayerResult::Handled(res) => match res {
8550
0
                Ok(()) => vk::Result::SUCCESS,
8551
0
                Err(e) => e,
8552
            },
8553
            LayerResult::Unhandled => unsafe {
8554
0
                (dispatch_table.get_physical_device_surface_formats_khr)(
8555
0
                    physical_device,
8556
0
                    surface,
8557
0
                    p_surface_format_count,
8558
0
                    p_surface_formats,
8559
0
                )
8560
            },
8561
        }
8562
0
    }
8563
0
    extern "system" fn get_physical_device_surface_present_modes_khr(
8564
0
        physical_device: vk::PhysicalDevice,
8565
0
        surface: vk::SurfaceKHR,
8566
0
        p_present_mode_count: *mut u32,
8567
0
        p_present_modes: *mut vk::PresentModeKHR,
8568
0
    ) -> vk::Result {
8569
0
        let global = Self::instance();
8570
0
        // vkGetPhysicalDeviceSurfacePresentModesKHR
8571
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8572
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8573
0
        let layer_result = instance_info
8574
0
            .customized_info
8575
0
            .borrow()
8576
0
            .hooks()
8577
0
            .get_physical_device_surface_present_modes_khr(physical_device, surface);
8578
0
        match layer_result {
8579
0
            LayerResult::Handled(res) => match res {
8580
0
                Ok(res) => unsafe {
8581
0
                    fill_vk_out_array(
8582
0
                        &res,
8583
0
                        NonNull::new(p_present_mode_count).unwrap(),
8584
0
                        p_present_modes,
8585
0
                    )
8586
                },
8587
0
                Err(e) => e,
8588
            },
8589
            LayerResult::Unhandled => unsafe {
8590
0
                (dispatch_table.get_physical_device_surface_present_modes_khr)(
8591
0
                    physical_device,
8592
0
                    surface,
8593
0
                    p_present_mode_count,
8594
0
                    p_present_modes,
8595
0
                )
8596
            },
8597
        }
8598
0
    }
8599
0
    extern "system" fn get_physical_device_present_rectangles_khr(
8600
0
        physical_device: vk::PhysicalDevice,
8601
0
        surface: vk::SurfaceKHR,
8602
0
        p_rect_count: *mut u32,
8603
0
        p_rects: *mut vk::Rect2D,
8604
0
    ) -> vk::Result {
8605
0
        let global = Self::instance();
8606
0
        // vkGetPhysicalDevicePresentRectanglesKHR
8607
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8608
0
        let dispatch_table = &instance_info.dispatch_table.khr_swapchain;
8609
        #[allow(clippy::unnecessary_cast)]
8610
0
        let layer_result = instance_info
8611
0
            .customized_info
8612
0
            .borrow()
8613
0
            .hooks()
8614
0
            .get_physical_device_present_rectangles_khr(
8615
0
                physical_device,
8616
0
                surface,
8617
0
                if p_rects.is_null() {
8618
0
                    None
8619
                } else {
8620
0
                    Some(unsafe {
8621
0
                        std::slice::from_raw_parts_mut(
8622
0
                            p_rects,
8623
0
                            *unsafe { p_rect_count.as_ref() }.unwrap() as usize,
8624
0
                        )
8625
0
                    })
8626
                },
8627
            );
8628
0
        match layer_result {
8629
0
            LayerResult::Handled(res) => match res {
8630
0
                Ok(()) => vk::Result::SUCCESS,
8631
0
                Err(e) => e,
8632
            },
8633
            LayerResult::Unhandled => unsafe {
8634
0
                (dispatch_table.get_physical_device_present_rectangles_khr)(
8635
0
                    physical_device,
8636
0
                    surface,
8637
0
                    p_rect_count,
8638
0
                    p_rects,
8639
0
                )
8640
            },
8641
        }
8642
0
    }
8643
0
    extern "system" fn get_physical_device_display_properties_khr(
8644
0
        physical_device: vk::PhysicalDevice,
8645
0
        p_property_count: *mut u32,
8646
0
        p_properties: *mut vk::DisplayPropertiesKHR,
8647
0
    ) -> vk::Result {
8648
0
        let global = Self::instance();
8649
0
        // vkGetPhysicalDeviceDisplayPropertiesKHR
8650
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8651
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8652
        #[allow(clippy::unnecessary_cast)]
8653
0
        let layer_result = instance_info
8654
0
            .customized_info
8655
0
            .borrow()
8656
0
            .hooks()
8657
0
            .get_physical_device_display_properties_khr(
8658
0
                physical_device,
8659
0
                if p_properties.is_null() {
8660
0
                    None
8661
                } else {
8662
0
                    Some(unsafe {
8663
0
                        std::slice::from_raw_parts_mut(
8664
0
                            p_properties,
8665
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
8666
0
                        )
8667
0
                    })
8668
                },
8669
            );
8670
0
        match layer_result {
8671
0
            LayerResult::Handled(res) => match res {
8672
0
                Ok(()) => vk::Result::SUCCESS,
8673
0
                Err(e) => e,
8674
            },
8675
            LayerResult::Unhandled => unsafe {
8676
0
                (dispatch_table.get_physical_device_display_properties_khr)(
8677
0
                    physical_device,
8678
0
                    p_property_count,
8679
0
                    p_properties,
8680
0
                )
8681
            },
8682
        }
8683
0
    }
8684
0
    extern "system" fn get_physical_device_display_plane_properties_khr(
8685
0
        physical_device: vk::PhysicalDevice,
8686
0
        p_property_count: *mut u32,
8687
0
        p_properties: *mut vk::DisplayPlanePropertiesKHR,
8688
0
    ) -> vk::Result {
8689
0
        let global = Self::instance();
8690
0
        // vkGetPhysicalDeviceDisplayPlanePropertiesKHR
8691
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8692
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8693
        #[allow(clippy::unnecessary_cast)]
8694
0
        let layer_result = instance_info
8695
0
            .customized_info
8696
0
            .borrow()
8697
0
            .hooks()
8698
0
            .get_physical_device_display_plane_properties_khr(
8699
0
                physical_device,
8700
0
                if p_properties.is_null() {
8701
0
                    None
8702
                } else {
8703
0
                    Some(unsafe {
8704
0
                        std::slice::from_raw_parts_mut(
8705
0
                            p_properties,
8706
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
8707
0
                        )
8708
0
                    })
8709
                },
8710
            );
8711
0
        match layer_result {
8712
0
            LayerResult::Handled(res) => match res {
8713
0
                Ok(()) => vk::Result::SUCCESS,
8714
0
                Err(e) => e,
8715
            },
8716
            LayerResult::Unhandled => unsafe {
8717
0
                (dispatch_table.get_physical_device_display_plane_properties_khr)(
8718
0
                    physical_device,
8719
0
                    p_property_count,
8720
0
                    p_properties,
8721
0
                )
8722
            },
8723
        }
8724
0
    }
8725
0
    extern "system" fn get_display_plane_supported_displays_khr(
8726
0
        physical_device: vk::PhysicalDevice,
8727
0
        plane_index: u32,
8728
0
        p_display_count: *mut u32,
8729
0
        p_displays: *mut vk::DisplayKHR,
8730
0
    ) -> vk::Result {
8731
0
        let global = Self::instance();
8732
0
        // vkGetDisplayPlaneSupportedDisplaysKHR
8733
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8734
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8735
0
        let layer_result = instance_info
8736
0
            .customized_info
8737
0
            .borrow()
8738
0
            .hooks()
8739
0
            .get_display_plane_supported_displays_khr(physical_device, plane_index);
8740
0
        match layer_result {
8741
0
            LayerResult::Handled(res) => match res {
8742
0
                Ok(res) => unsafe {
8743
0
                    fill_vk_out_array(&res, NonNull::new(p_display_count).unwrap(), p_displays)
8744
                },
8745
0
                Err(e) => e,
8746
            },
8747
            LayerResult::Unhandled => unsafe {
8748
0
                (dispatch_table.get_display_plane_supported_displays_khr)(
8749
0
                    physical_device,
8750
0
                    plane_index,
8751
0
                    p_display_count,
8752
0
                    p_displays,
8753
0
                )
8754
            },
8755
        }
8756
0
    }
8757
0
    extern "system" fn get_display_mode_properties_khr(
8758
0
        physical_device: vk::PhysicalDevice,
8759
0
        display: vk::DisplayKHR,
8760
0
        p_property_count: *mut u32,
8761
0
        p_properties: *mut vk::DisplayModePropertiesKHR,
8762
0
    ) -> vk::Result {
8763
0
        let global = Self::instance();
8764
0
        // vkGetDisplayModePropertiesKHR
8765
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8766
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8767
        #[allow(clippy::unnecessary_cast)]
8768
0
        let layer_result = instance_info
8769
0
            .customized_info
8770
0
            .borrow()
8771
0
            .hooks()
8772
0
            .get_display_mode_properties_khr(
8773
0
                physical_device,
8774
0
                display,
8775
0
                if p_properties.is_null() {
8776
0
                    None
8777
                } else {
8778
0
                    Some(unsafe {
8779
0
                        std::slice::from_raw_parts_mut(
8780
0
                            p_properties,
8781
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
8782
0
                        )
8783
0
                    })
8784
                },
8785
            );
8786
0
        match layer_result {
8787
0
            LayerResult::Handled(res) => match res {
8788
0
                Ok(()) => vk::Result::SUCCESS,
8789
0
                Err(e) => e,
8790
            },
8791
            LayerResult::Unhandled => unsafe {
8792
0
                (dispatch_table.get_display_mode_properties_khr)(
8793
0
                    physical_device,
8794
0
                    display,
8795
0
                    p_property_count,
8796
0
                    p_properties,
8797
0
                )
8798
            },
8799
        }
8800
0
    }
8801
0
    extern "system" fn create_display_mode_khr(
8802
0
        physical_device: vk::PhysicalDevice,
8803
0
        display: vk::DisplayKHR,
8804
0
        p_create_info: *const vk::DisplayModeCreateInfoKHR,
8805
0
        p_allocator: *const vk::AllocationCallbacks,
8806
0
        p_mode: *mut vk::DisplayModeKHR,
8807
0
    ) -> vk::Result {
8808
0
        let global = Self::instance();
8809
0
        // vkCreateDisplayModeKHR
8810
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8811
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8812
0
        let layer_result = instance_info
8813
0
            .customized_info
8814
0
            .borrow()
8815
0
            .hooks()
8816
0
            .create_display_mode_khr(
8817
0
                physical_device,
8818
0
                display,
8819
0
                unsafe { p_create_info.as_ref() }.unwrap(),
8820
0
                unsafe { p_allocator.as_ref() },
8821
0
            );
8822
0
        match layer_result {
8823
0
            LayerResult::Handled(res) => match res {
8824
0
                Ok(res) => {
8825
0
                    *unsafe { p_mode.as_mut() }.unwrap() = res;
8826
0
                    vk::Result::SUCCESS
8827
                }
8828
0
                Err(e) => e,
8829
            },
8830
            LayerResult::Unhandled => unsafe {
8831
0
                (dispatch_table.create_display_mode_khr)(
8832
0
                    physical_device,
8833
0
                    display,
8834
0
                    p_create_info,
8835
0
                    p_allocator,
8836
0
                    p_mode,
8837
0
                )
8838
            },
8839
        }
8840
0
    }
8841
0
    extern "system" fn get_display_plane_capabilities_khr(
8842
0
        physical_device: vk::PhysicalDevice,
8843
0
        mode: vk::DisplayModeKHR,
8844
0
        plane_index: u32,
8845
0
        p_capabilities: *mut vk::DisplayPlaneCapabilitiesKHR,
8846
0
    ) -> vk::Result {
8847
0
        let global = Self::instance();
8848
0
        // vkGetDisplayPlaneCapabilitiesKHR
8849
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8850
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8851
0
        let layer_result = instance_info
8852
0
            .customized_info
8853
0
            .borrow()
8854
0
            .hooks()
8855
0
            .get_display_plane_capabilities_khr(
8856
0
                physical_device,
8857
0
                mode,
8858
0
                plane_index,
8859
0
                unsafe { p_capabilities.as_mut() }.unwrap(),
8860
0
            );
8861
0
        match layer_result {
8862
0
            LayerResult::Handled(res) => match res {
8863
0
                Ok(()) => vk::Result::SUCCESS,
8864
0
                Err(e) => e,
8865
            },
8866
            LayerResult::Unhandled => unsafe {
8867
0
                (dispatch_table.get_display_plane_capabilities_khr)(
8868
0
                    physical_device,
8869
0
                    mode,
8870
0
                    plane_index,
8871
0
                    p_capabilities,
8872
0
                )
8873
            },
8874
        }
8875
0
    }
8876
0
    extern "system" fn create_display_plane_surface_khr(
8877
0
        instance: vk::Instance,
8878
0
        p_create_info: *const vk::DisplaySurfaceCreateInfoKHR,
8879
0
        p_allocator: *const vk::AllocationCallbacks,
8880
0
        p_surface: *mut vk::SurfaceKHR,
8881
0
    ) -> vk::Result {
8882
0
        let global = Self::instance();
8883
0
        // vkCreateDisplayPlaneSurfaceKHR
8884
0
        let instance_info = global.get_instance_info(instance).unwrap();
8885
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8886
0
        let layer_result = instance_info
8887
0
            .customized_info
8888
0
            .borrow()
8889
0
            .hooks()
8890
0
            .create_display_plane_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8891
0
                p_allocator.as_ref()
8892
0
            });
8893
0
        match layer_result {
8894
0
            LayerResult::Handled(res) => match res {
8895
0
                Ok(res) => {
8896
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8897
0
                    vk::Result::SUCCESS
8898
                }
8899
0
                Err(e) => e,
8900
            },
8901
            LayerResult::Unhandled => unsafe {
8902
0
                (dispatch_table.create_display_plane_surface_khr)(
8903
0
                    instance,
8904
0
                    p_create_info,
8905
0
                    p_allocator,
8906
0
                    p_surface,
8907
0
                )
8908
            },
8909
        }
8910
0
    }
8911
0
    extern "system" fn create_xlib_surface_khr(
8912
0
        instance: vk::Instance,
8913
0
        p_create_info: *const vk::XlibSurfaceCreateInfoKHR,
8914
0
        p_allocator: *const vk::AllocationCallbacks,
8915
0
        p_surface: *mut vk::SurfaceKHR,
8916
0
    ) -> vk::Result {
8917
0
        let global = Self::instance();
8918
0
        // vkCreateXlibSurfaceKHR
8919
0
        let instance_info = global.get_instance_info(instance).unwrap();
8920
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8921
0
        let layer_result = instance_info
8922
0
            .customized_info
8923
0
            .borrow()
8924
0
            .hooks()
8925
0
            .create_xlib_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8926
0
                p_allocator.as_ref()
8927
0
            });
8928
0
        match layer_result {
8929
0
            LayerResult::Handled(res) => match res {
8930
0
                Ok(res) => {
8931
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8932
0
                    vk::Result::SUCCESS
8933
                }
8934
0
                Err(e) => e,
8935
            },
8936
            LayerResult::Unhandled => unsafe {
8937
0
                (dispatch_table.create_xlib_surface_khr)(
8938
0
                    instance,
8939
0
                    p_create_info,
8940
0
                    p_allocator,
8941
0
                    p_surface,
8942
0
                )
8943
            },
8944
        }
8945
0
    }
8946
0
    extern "system" fn get_physical_device_xlib_presentation_support_khr(
8947
0
        physical_device: vk::PhysicalDevice,
8948
0
        queue_family_index: u32,
8949
0
        dpy: *mut vk::Display,
8950
0
        visual_id: vk::VisualID,
8951
0
    ) -> vk::Bool32 {
8952
0
        let global = Self::instance();
8953
0
        // vkGetPhysicalDeviceXlibPresentationSupportKHR
8954
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8955
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8956
0
        let layer_result = instance_info
8957
0
            .customized_info
8958
0
            .borrow()
8959
0
            .hooks()
8960
0
            .get_physical_device_xlib_presentation_support_khr(
8961
0
                physical_device,
8962
0
                queue_family_index,
8963
0
                unsafe { dpy.as_mut() }.unwrap(),
8964
0
                visual_id,
8965
0
            );
8966
0
        match layer_result {
8967
0
            LayerResult::Handled(res) => {
8968
0
                if res {
8969
0
                    vk::TRUE
8970
                } else {
8971
0
                    vk::FALSE
8972
                }
8973
            }
8974
            LayerResult::Unhandled => unsafe {
8975
0
                (dispatch_table.get_physical_device_xlib_presentation_support_khr)(
8976
0
                    physical_device,
8977
0
                    queue_family_index,
8978
0
                    dpy,
8979
0
                    visual_id,
8980
0
                )
8981
            },
8982
        }
8983
0
    }
8984
0
    extern "system" fn create_xcb_surface_khr(
8985
0
        instance: vk::Instance,
8986
0
        p_create_info: *const vk::XcbSurfaceCreateInfoKHR,
8987
0
        p_allocator: *const vk::AllocationCallbacks,
8988
0
        p_surface: *mut vk::SurfaceKHR,
8989
0
    ) -> vk::Result {
8990
0
        let global = Self::instance();
8991
0
        // vkCreateXcbSurfaceKHR
8992
0
        let instance_info = global.get_instance_info(instance).unwrap();
8993
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
8994
0
        let layer_result = instance_info
8995
0
            .customized_info
8996
0
            .borrow()
8997
0
            .hooks()
8998
0
            .create_xcb_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8999
0
                p_allocator.as_ref()
9000
0
            });
9001
0
        match layer_result {
9002
0
            LayerResult::Handled(res) => match res {
9003
0
                Ok(res) => {
9004
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9005
0
                    vk::Result::SUCCESS
9006
                }
9007
0
                Err(e) => e,
9008
            },
9009
            LayerResult::Unhandled => unsafe {
9010
0
                (dispatch_table.create_xcb_surface_khr)(
9011
0
                    instance,
9012
0
                    p_create_info,
9013
0
                    p_allocator,
9014
0
                    p_surface,
9015
0
                )
9016
            },
9017
        }
9018
0
    }
9019
0
    extern "system" fn get_physical_device_xcb_presentation_support_khr(
9020
0
        physical_device: vk::PhysicalDevice,
9021
0
        queue_family_index: u32,
9022
0
        connection: *mut vk::xcb_connection_t,
9023
0
        visual_id: vk::xcb_visualid_t,
9024
0
    ) -> vk::Bool32 {
9025
0
        let global = Self::instance();
9026
0
        // vkGetPhysicalDeviceXcbPresentationSupportKHR
9027
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9028
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
9029
0
        let layer_result = instance_info
9030
0
            .customized_info
9031
0
            .borrow()
9032
0
            .hooks()
9033
0
            .get_physical_device_xcb_presentation_support_khr(
9034
0
                physical_device,
9035
0
                queue_family_index,
9036
0
                unsafe { connection.as_mut() }.unwrap(),
9037
0
                visual_id,
9038
0
            );
9039
0
        match layer_result {
9040
0
            LayerResult::Handled(res) => {
9041
0
                if res {
9042
0
                    vk::TRUE
9043
                } else {
9044
0
                    vk::FALSE
9045
                }
9046
            }
9047
            LayerResult::Unhandled => unsafe {
9048
0
                (dispatch_table.get_physical_device_xcb_presentation_support_khr)(
9049
0
                    physical_device,
9050
0
                    queue_family_index,
9051
0
                    connection,
9052
0
                    visual_id,
9053
0
                )
9054
            },
9055
        }
9056
0
    }
9057
0
    extern "system" fn create_wayland_surface_khr(
9058
0
        instance: vk::Instance,
9059
0
        p_create_info: *const vk::WaylandSurfaceCreateInfoKHR,
9060
0
        p_allocator: *const vk::AllocationCallbacks,
9061
0
        p_surface: *mut vk::SurfaceKHR,
9062
0
    ) -> vk::Result {
9063
0
        let global = Self::instance();
9064
0
        // vkCreateWaylandSurfaceKHR
9065
0
        let instance_info = global.get_instance_info(instance).unwrap();
9066
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9067
0
        let layer_result = instance_info
9068
0
            .customized_info
9069
0
            .borrow()
9070
0
            .hooks()
9071
0
            .create_wayland_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9072
0
                p_allocator.as_ref()
9073
0
            });
9074
0
        match layer_result {
9075
0
            LayerResult::Handled(res) => match res {
9076
0
                Ok(res) => {
9077
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9078
0
                    vk::Result::SUCCESS
9079
                }
9080
0
                Err(e) => e,
9081
            },
9082
            LayerResult::Unhandled => unsafe {
9083
0
                (dispatch_table.create_wayland_surface_khr)(
9084
0
                    instance,
9085
0
                    p_create_info,
9086
0
                    p_allocator,
9087
0
                    p_surface,
9088
0
                )
9089
            },
9090
        }
9091
0
    }
9092
0
    extern "system" fn get_physical_device_wayland_presentation_support_khr(
9093
0
        physical_device: vk::PhysicalDevice,
9094
0
        queue_family_index: u32,
9095
0
        display: *mut vk::wl_display,
9096
0
    ) -> vk::Bool32 {
9097
0
        let global = Self::instance();
9098
0
        // vkGetPhysicalDeviceWaylandPresentationSupportKHR
9099
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9100
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9101
0
        let layer_result = instance_info
9102
0
            .customized_info
9103
0
            .borrow()
9104
0
            .hooks()
9105
0
            .get_physical_device_wayland_presentation_support_khr(
9106
0
                physical_device,
9107
0
                queue_family_index,
9108
0
                unsafe { display.as_mut() }.unwrap(),
9109
0
            );
9110
0
        match layer_result {
9111
0
            LayerResult::Handled(res) => {
9112
0
                if res {
9113
0
                    vk::TRUE
9114
                } else {
9115
0
                    vk::FALSE
9116
                }
9117
            }
9118
            LayerResult::Unhandled => unsafe {
9119
0
                (dispatch_table.get_physical_device_wayland_presentation_support_khr)(
9120
0
                    physical_device,
9121
0
                    queue_family_index,
9122
0
                    display,
9123
0
                )
9124
            },
9125
        }
9126
0
    }
9127
0
    extern "system" fn create_android_surface_khr(
9128
0
        instance: vk::Instance,
9129
0
        p_create_info: *const vk::AndroidSurfaceCreateInfoKHR,
9130
0
        p_allocator: *const vk::AllocationCallbacks,
9131
0
        p_surface: *mut vk::SurfaceKHR,
9132
0
    ) -> vk::Result {
9133
0
        let global = Self::instance();
9134
0
        // vkCreateAndroidSurfaceKHR
9135
0
        let instance_info = global.get_instance_info(instance).unwrap();
9136
0
        let dispatch_table = &instance_info.dispatch_table.khr_android_surface;
9137
0
        let layer_result = instance_info
9138
0
            .customized_info
9139
0
            .borrow()
9140
0
            .hooks()
9141
0
            .create_android_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9142
0
                p_allocator.as_ref()
9143
0
            });
9144
0
        match layer_result {
9145
0
            LayerResult::Handled(res) => match res {
9146
0
                Ok(res) => {
9147
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9148
0
                    vk::Result::SUCCESS
9149
                }
9150
0
                Err(e) => e,
9151
            },
9152
            LayerResult::Unhandled => unsafe {
9153
0
                (dispatch_table.create_android_surface_khr)(
9154
0
                    instance,
9155
0
                    p_create_info,
9156
0
                    p_allocator,
9157
0
                    p_surface,
9158
0
                )
9159
            },
9160
        }
9161
0
    }
9162
0
    extern "system" fn create_win32_surface_khr(
9163
0
        instance: vk::Instance,
9164
0
        p_create_info: *const vk::Win32SurfaceCreateInfoKHR,
9165
0
        p_allocator: *const vk::AllocationCallbacks,
9166
0
        p_surface: *mut vk::SurfaceKHR,
9167
0
    ) -> vk::Result {
9168
0
        let global = Self::instance();
9169
0
        // vkCreateWin32SurfaceKHR
9170
0
        let instance_info = global.get_instance_info(instance).unwrap();
9171
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9172
0
        let layer_result = instance_info
9173
0
            .customized_info
9174
0
            .borrow()
9175
0
            .hooks()
9176
0
            .create_win32_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9177
0
                p_allocator.as_ref()
9178
0
            });
9179
0
        match layer_result {
9180
0
            LayerResult::Handled(res) => match res {
9181
0
                Ok(res) => {
9182
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9183
0
                    vk::Result::SUCCESS
9184
                }
9185
0
                Err(e) => e,
9186
            },
9187
            LayerResult::Unhandled => unsafe {
9188
0
                (dispatch_table.create_win32_surface_khr)(
9189
0
                    instance,
9190
0
                    p_create_info,
9191
0
                    p_allocator,
9192
0
                    p_surface,
9193
0
                )
9194
            },
9195
        }
9196
0
    }
9197
0
    extern "system" fn get_physical_device_win32_presentation_support_khr(
9198
0
        physical_device: vk::PhysicalDevice,
9199
0
        queue_family_index: u32,
9200
0
    ) -> vk::Bool32 {
9201
0
        let global = Self::instance();
9202
0
        // vkGetPhysicalDeviceWin32PresentationSupportKHR
9203
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9204
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9205
0
        let layer_result = instance_info
9206
0
            .customized_info
9207
0
            .borrow()
9208
0
            .hooks()
9209
0
            .get_physical_device_win32_presentation_support_khr(
9210
0
                physical_device,
9211
0
                queue_family_index,
9212
0
            );
9213
0
        match layer_result {
9214
0
            LayerResult::Handled(res) => {
9215
0
                if res {
9216
0
                    vk::TRUE
9217
                } else {
9218
0
                    vk::FALSE
9219
                }
9220
            }
9221
            LayerResult::Unhandled => unsafe {
9222
0
                (dispatch_table.get_physical_device_win32_presentation_support_khr)(
9223
0
                    physical_device,
9224
0
                    queue_family_index,
9225
0
                )
9226
            },
9227
        }
9228
0
    }
9229
0
    extern "system" fn get_physical_device_video_capabilities_khr(
9230
0
        physical_device: vk::PhysicalDevice,
9231
0
        p_video_profile: *const vk::VideoProfileInfoKHR,
9232
0
        p_capabilities: *mut vk::VideoCapabilitiesKHR,
9233
0
    ) -> vk::Result {
9234
0
        let global = Self::instance();
9235
0
        // vkGetPhysicalDeviceVideoCapabilitiesKHR
9236
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9237
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9238
0
        let layer_result = instance_info
9239
0
            .customized_info
9240
0
            .borrow()
9241
0
            .hooks()
9242
0
            .get_physical_device_video_capabilities_khr(
9243
0
                physical_device,
9244
0
                unsafe { p_video_profile.as_ref() }.unwrap(),
9245
0
                unsafe { p_capabilities.as_mut() }.unwrap(),
9246
0
            );
9247
0
        match layer_result {
9248
0
            LayerResult::Handled(res) => match res {
9249
0
                Ok(()) => vk::Result::SUCCESS,
9250
0
                Err(e) => e,
9251
            },
9252
            LayerResult::Unhandled => unsafe {
9253
0
                (dispatch_table.get_physical_device_video_capabilities_khr)(
9254
0
                    physical_device,
9255
0
                    p_video_profile,
9256
0
                    p_capabilities,
9257
0
                )
9258
            },
9259
        }
9260
0
    }
9261
0
    extern "system" fn get_physical_device_video_format_properties_khr(
9262
0
        physical_device: vk::PhysicalDevice,
9263
0
        p_video_format_info: *const vk::PhysicalDeviceVideoFormatInfoKHR,
9264
0
        p_video_format_property_count: *mut u32,
9265
0
        p_video_format_properties: *mut vk::VideoFormatPropertiesKHR,
9266
0
    ) -> vk::Result {
9267
0
        let global = Self::instance();
9268
0
        // vkGetPhysicalDeviceVideoFormatPropertiesKHR
9269
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9270
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9271
        #[allow(clippy::unnecessary_cast)]
9272
0
        let layer_result = instance_info
9273
0
            .customized_info
9274
0
            .borrow()
9275
0
            .hooks()
9276
0
            .get_physical_device_video_format_properties_khr(
9277
0
                physical_device,
9278
0
                unsafe { p_video_format_info.as_ref() }.unwrap(),
9279
0
                if p_video_format_properties.is_null() {
9280
0
                    None
9281
                } else {
9282
0
                    Some(unsafe {
9283
0
                        std::slice::from_raw_parts_mut(
9284
0
                            p_video_format_properties,
9285
0
                            *unsafe { p_video_format_property_count.as_ref() }.unwrap() as usize,
9286
0
                        )
9287
0
                    })
9288
                },
9289
            );
9290
0
        match layer_result {
9291
0
            LayerResult::Handled(res) => match res {
9292
0
                Ok(()) => vk::Result::SUCCESS,
9293
0
                Err(e) => e,
9294
            },
9295
            LayerResult::Unhandled => unsafe {
9296
0
                (dispatch_table.get_physical_device_video_format_properties_khr)(
9297
0
                    physical_device,
9298
0
                    p_video_format_info,
9299
0
                    p_video_format_property_count,
9300
0
                    p_video_format_properties,
9301
0
                )
9302
            },
9303
        }
9304
0
    }
9305
0
    extern "system" fn enumerate_physical_device_queue_family_performance_query_counters_khr(
9306
0
        physical_device: vk::PhysicalDevice,
9307
0
        queue_family_index: u32,
9308
0
        p_counter_count: *mut u32,
9309
0
        p_counters: *mut vk::PerformanceCounterKHR,
9310
0
        p_counter_descriptions: *mut vk::PerformanceCounterDescriptionKHR,
9311
0
    ) -> vk::Result {
9312
0
        let global = Self::instance();
9313
0
        // vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
9314
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9315
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9316
        #[allow(clippy::unnecessary_cast)]
9317
        #[allow(clippy::unnecessary_cast)]
9318
0
        let layer_result = instance_info
9319
0
            .customized_info
9320
0
            .borrow()
9321
0
            .hooks()
9322
0
            .enumerate_physical_device_queue_family_performance_query_counters_khr(
9323
0
                physical_device,
9324
0
                queue_family_index,
9325
0
                if p_counters.is_null() {
9326
0
                    None
9327
                } else {
9328
0
                    Some(unsafe {
9329
0
                        std::slice::from_raw_parts_mut(
9330
0
                            p_counters,
9331
0
                            *unsafe { p_counter_count.as_ref() }.unwrap() as usize,
9332
0
                        )
9333
0
                    })
9334
                },
9335
0
                if p_counter_descriptions.is_null() {
9336
0
                    None
9337
                } else {
9338
0
                    Some(unsafe {
9339
0
                        std::slice::from_raw_parts_mut(
9340
0
                            p_counter_descriptions,
9341
0
                            *unsafe { p_counter_count.as_ref() }.unwrap() as usize,
9342
0
                        )
9343
0
                    })
9344
                },
9345
            );
9346
0
        match layer_result {
9347
0
            LayerResult::Handled(res) => match res {
9348
0
                Ok(()) => vk::Result::SUCCESS,
9349
0
                Err(e) => e,
9350
            },
9351
            LayerResult::Unhandled => unsafe {
9352
0
                (dispatch_table
9353
0
                    .enumerate_physical_device_queue_family_performance_query_counters_khr)(
9354
0
                    physical_device,
9355
0
                    queue_family_index,
9356
0
                    p_counter_count,
9357
0
                    p_counters,
9358
0
                    p_counter_descriptions,
9359
0
                )
9360
            },
9361
        }
9362
0
    }
9363
0
    extern "system" fn get_physical_device_queue_family_performance_query_passes_khr(
9364
0
        physical_device: vk::PhysicalDevice,
9365
0
        p_performance_query_create_info: *const vk::QueryPoolPerformanceCreateInfoKHR,
9366
0
        p_num_passes: *mut u32,
9367
0
    ) {
9368
0
        let global = Self::instance();
9369
0
        // vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
9370
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9371
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9372
0
        let layer_result = instance_info
9373
0
            .customized_info
9374
0
            .borrow()
9375
0
            .hooks()
9376
0
            .get_physical_device_queue_family_performance_query_passes_khr(
9377
0
                physical_device,
9378
0
                unsafe { p_performance_query_create_info.as_ref() }.unwrap(),
9379
0
            );
9380
0
        match layer_result {
9381
0
            LayerResult::Handled(res) => {
9382
0
                *unsafe { p_num_passes.as_mut() }.unwrap() = res;
9383
0
            }
9384
            LayerResult::Unhandled => unsafe {
9385
0
                (dispatch_table.get_physical_device_queue_family_performance_query_passes_khr)(
9386
0
                    physical_device,
9387
0
                    p_performance_query_create_info,
9388
0
                    p_num_passes,
9389
0
                )
9390
            },
9391
        }
9392
0
    }
9393
0
    extern "system" fn get_physical_device_surface_capabilities2_khr(
9394
0
        physical_device: vk::PhysicalDevice,
9395
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9396
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2KHR,
9397
0
    ) -> vk::Result {
9398
0
        let global = Self::instance();
9399
0
        // vkGetPhysicalDeviceSurfaceCapabilities2KHR
9400
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9401
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9402
0
        let layer_result = instance_info
9403
0
            .customized_info
9404
0
            .borrow()
9405
0
            .hooks()
9406
0
            .get_physical_device_surface_capabilities2_khr(
9407
0
                physical_device,
9408
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9409
0
                unsafe { p_surface_capabilities.as_mut() }.unwrap(),
9410
0
            );
9411
0
        match layer_result {
9412
0
            LayerResult::Handled(res) => match res {
9413
0
                Ok(()) => vk::Result::SUCCESS,
9414
0
                Err(e) => e,
9415
            },
9416
            LayerResult::Unhandled => unsafe {
9417
0
                (dispatch_table.get_physical_device_surface_capabilities2_khr)(
9418
0
                    physical_device,
9419
0
                    p_surface_info,
9420
0
                    p_surface_capabilities,
9421
0
                )
9422
            },
9423
        }
9424
0
    }
9425
0
    extern "system" fn get_physical_device_surface_formats2_khr(
9426
0
        physical_device: vk::PhysicalDevice,
9427
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9428
0
        p_surface_format_count: *mut u32,
9429
0
        p_surface_formats: *mut vk::SurfaceFormat2KHR,
9430
0
    ) -> vk::Result {
9431
0
        let global = Self::instance();
9432
0
        // vkGetPhysicalDeviceSurfaceFormats2KHR
9433
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9434
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9435
        #[allow(clippy::unnecessary_cast)]
9436
0
        let layer_result = instance_info
9437
0
            .customized_info
9438
0
            .borrow()
9439
0
            .hooks()
9440
0
            .get_physical_device_surface_formats2_khr(
9441
0
                physical_device,
9442
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9443
0
                if p_surface_formats.is_null() {
9444
0
                    None
9445
                } else {
9446
0
                    Some(unsafe {
9447
0
                        std::slice::from_raw_parts_mut(
9448
0
                            p_surface_formats,
9449
0
                            *unsafe { p_surface_format_count.as_ref() }.unwrap() as usize,
9450
0
                        )
9451
0
                    })
9452
                },
9453
            );
9454
0
        match layer_result {
9455
0
            LayerResult::Handled(res) => match res {
9456
0
                Ok(()) => vk::Result::SUCCESS,
9457
0
                Err(e) => e,
9458
            },
9459
            LayerResult::Unhandled => unsafe {
9460
0
                (dispatch_table.get_physical_device_surface_formats2_khr)(
9461
0
                    physical_device,
9462
0
                    p_surface_info,
9463
0
                    p_surface_format_count,
9464
0
                    p_surface_formats,
9465
0
                )
9466
            },
9467
        }
9468
0
    }
9469
0
    extern "system" fn get_physical_device_display_properties2_khr(
9470
0
        physical_device: vk::PhysicalDevice,
9471
0
        p_property_count: *mut u32,
9472
0
        p_properties: *mut vk::DisplayProperties2KHR,
9473
0
    ) -> vk::Result {
9474
0
        let global = Self::instance();
9475
0
        // vkGetPhysicalDeviceDisplayProperties2KHR
9476
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9477
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9478
        #[allow(clippy::unnecessary_cast)]
9479
0
        let layer_result = instance_info
9480
0
            .customized_info
9481
0
            .borrow()
9482
0
            .hooks()
9483
0
            .get_physical_device_display_properties2_khr(
9484
0
                physical_device,
9485
0
                if p_properties.is_null() {
9486
0
                    None
9487
                } else {
9488
0
                    Some(unsafe {
9489
0
                        std::slice::from_raw_parts_mut(
9490
0
                            p_properties,
9491
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
9492
0
                        )
9493
0
                    })
9494
                },
9495
            );
9496
0
        match layer_result {
9497
0
            LayerResult::Handled(res) => match res {
9498
0
                Ok(()) => vk::Result::SUCCESS,
9499
0
                Err(e) => e,
9500
            },
9501
            LayerResult::Unhandled => unsafe {
9502
0
                (dispatch_table.get_physical_device_display_properties2_khr)(
9503
0
                    physical_device,
9504
0
                    p_property_count,
9505
0
                    p_properties,
9506
0
                )
9507
            },
9508
        }
9509
0
    }
9510
0
    extern "system" fn get_physical_device_display_plane_properties2_khr(
9511
0
        physical_device: vk::PhysicalDevice,
9512
0
        p_property_count: *mut u32,
9513
0
        p_properties: *mut vk::DisplayPlaneProperties2KHR,
9514
0
    ) -> vk::Result {
9515
0
        let global = Self::instance();
9516
0
        // vkGetPhysicalDeviceDisplayPlaneProperties2KHR
9517
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9518
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9519
        #[allow(clippy::unnecessary_cast)]
9520
0
        let layer_result = instance_info
9521
0
            .customized_info
9522
0
            .borrow()
9523
0
            .hooks()
9524
0
            .get_physical_device_display_plane_properties2_khr(
9525
0
                physical_device,
9526
0
                if p_properties.is_null() {
9527
0
                    None
9528
                } else {
9529
0
                    Some(unsafe {
9530
0
                        std::slice::from_raw_parts_mut(
9531
0
                            p_properties,
9532
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
9533
0
                        )
9534
0
                    })
9535
                },
9536
            );
9537
0
        match layer_result {
9538
0
            LayerResult::Handled(res) => match res {
9539
0
                Ok(()) => vk::Result::SUCCESS,
9540
0
                Err(e) => e,
9541
            },
9542
            LayerResult::Unhandled => unsafe {
9543
0
                (dispatch_table.get_physical_device_display_plane_properties2_khr)(
9544
0
                    physical_device,
9545
0
                    p_property_count,
9546
0
                    p_properties,
9547
0
                )
9548
            },
9549
        }
9550
0
    }
9551
0
    extern "system" fn get_display_mode_properties2_khr(
9552
0
        physical_device: vk::PhysicalDevice,
9553
0
        display: vk::DisplayKHR,
9554
0
        p_property_count: *mut u32,
9555
0
        p_properties: *mut vk::DisplayModeProperties2KHR,
9556
0
    ) -> vk::Result {
9557
0
        let global = Self::instance();
9558
0
        // vkGetDisplayModeProperties2KHR
9559
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9560
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9561
        #[allow(clippy::unnecessary_cast)]
9562
0
        let layer_result = instance_info
9563
0
            .customized_info
9564
0
            .borrow()
9565
0
            .hooks()
9566
0
            .get_display_mode_properties2_khr(
9567
0
                physical_device,
9568
0
                display,
9569
0
                if p_properties.is_null() {
9570
0
                    None
9571
                } else {
9572
0
                    Some(unsafe {
9573
0
                        std::slice::from_raw_parts_mut(
9574
0
                            p_properties,
9575
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
9576
0
                        )
9577
0
                    })
9578
                },
9579
            );
9580
0
        match layer_result {
9581
0
            LayerResult::Handled(res) => match res {
9582
0
                Ok(()) => vk::Result::SUCCESS,
9583
0
                Err(e) => e,
9584
            },
9585
            LayerResult::Unhandled => unsafe {
9586
0
                (dispatch_table.get_display_mode_properties2_khr)(
9587
0
                    physical_device,
9588
0
                    display,
9589
0
                    p_property_count,
9590
0
                    p_properties,
9591
0
                )
9592
            },
9593
        }
9594
0
    }
9595
0
    extern "system" fn get_display_plane_capabilities2_khr(
9596
0
        physical_device: vk::PhysicalDevice,
9597
0
        p_display_plane_info: *const vk::DisplayPlaneInfo2KHR,
9598
0
        p_capabilities: *mut vk::DisplayPlaneCapabilities2KHR,
9599
0
    ) -> vk::Result {
9600
0
        let global = Self::instance();
9601
0
        // vkGetDisplayPlaneCapabilities2KHR
9602
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9603
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9604
0
        let layer_result = instance_info
9605
0
            .customized_info
9606
0
            .borrow()
9607
0
            .hooks()
9608
0
            .get_display_plane_capabilities2_khr(
9609
0
                physical_device,
9610
0
                unsafe { p_display_plane_info.as_ref() }.unwrap(),
9611
0
                unsafe { p_capabilities.as_mut() }.unwrap(),
9612
0
            );
9613
0
        match layer_result {
9614
0
            LayerResult::Handled(res) => match res {
9615
0
                Ok(()) => vk::Result::SUCCESS,
9616
0
                Err(e) => e,
9617
            },
9618
            LayerResult::Unhandled => unsafe {
9619
0
                (dispatch_table.get_display_plane_capabilities2_khr)(
9620
0
                    physical_device,
9621
0
                    p_display_plane_info,
9622
0
                    p_capabilities,
9623
0
                )
9624
            },
9625
        }
9626
0
    }
9627
0
    extern "system" fn get_physical_device_fragment_shading_rates_khr(
9628
0
        physical_device: vk::PhysicalDevice,
9629
0
        p_fragment_shading_rate_count: *mut u32,
9630
0
        p_fragment_shading_rates: *mut vk::PhysicalDeviceFragmentShadingRateKHR,
9631
0
    ) -> vk::Result {
9632
0
        let global = Self::instance();
9633
0
        // vkGetPhysicalDeviceFragmentShadingRatesKHR
9634
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9635
0
        let dispatch_table = &instance_info.dispatch_table.khr_fragment_shading_rate;
9636
        #[allow(clippy::unnecessary_cast)]
9637
0
        let layer_result = instance_info
9638
0
            .customized_info
9639
0
            .borrow()
9640
0
            .hooks()
9641
0
            .get_physical_device_fragment_shading_rates_khr(
9642
0
                physical_device,
9643
0
                if p_fragment_shading_rates.is_null() {
9644
0
                    None
9645
                } else {
9646
0
                    Some(unsafe {
9647
0
                        std::slice::from_raw_parts_mut(
9648
0
                            p_fragment_shading_rates,
9649
0
                            *unsafe { p_fragment_shading_rate_count.as_ref() }.unwrap() as usize,
9650
0
                        )
9651
0
                    })
9652
                },
9653
            );
9654
0
        match layer_result {
9655
0
            LayerResult::Handled(res) => match res {
9656
0
                Ok(()) => vk::Result::SUCCESS,
9657
0
                Err(e) => e,
9658
            },
9659
            LayerResult::Unhandled => unsafe {
9660
0
                (dispatch_table.get_physical_device_fragment_shading_rates_khr)(
9661
0
                    physical_device,
9662
0
                    p_fragment_shading_rate_count,
9663
0
                    p_fragment_shading_rates,
9664
0
                )
9665
            },
9666
        }
9667
0
    }
9668
0
    extern "system" fn create_debug_report_callback_ext(
9669
0
        instance: vk::Instance,
9670
0
        p_create_info: *const vk::DebugReportCallbackCreateInfoEXT,
9671
0
        p_allocator: *const vk::AllocationCallbacks,
9672
0
        p_callback: *mut vk::DebugReportCallbackEXT,
9673
0
    ) -> vk::Result {
9674
0
        let global = Self::instance();
9675
0
        // vkCreateDebugReportCallbackEXT
9676
0
        let instance_info = global.get_instance_info(instance).unwrap();
9677
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9678
0
        let layer_result = instance_info
9679
0
            .customized_info
9680
0
            .borrow()
9681
0
            .hooks()
9682
0
            .create_debug_report_callback_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9683
0
                p_allocator.as_ref()
9684
0
            });
9685
0
        match layer_result {
9686
0
            LayerResult::Handled(res) => match res {
9687
0
                Ok(res) => {
9688
0
                    *unsafe { p_callback.as_mut() }.unwrap() = res;
9689
0
                    vk::Result::SUCCESS
9690
                }
9691
0
                Err(e) => e,
9692
            },
9693
            LayerResult::Unhandled => unsafe {
9694
0
                (dispatch_table.create_debug_report_callback_ext)(
9695
0
                    instance,
9696
0
                    p_create_info,
9697
0
                    p_allocator,
9698
0
                    p_callback,
9699
0
                )
9700
            },
9701
        }
9702
0
    }
9703
0
    extern "system" fn destroy_debug_report_callback_ext(
9704
0
        instance: vk::Instance,
9705
0
        callback: vk::DebugReportCallbackEXT,
9706
0
        p_allocator: *const vk::AllocationCallbacks,
9707
0
    ) {
9708
0
        let global = Self::instance();
9709
0
        // vkDestroyDebugReportCallbackEXT
9710
0
        let instance_info = global.get_instance_info(instance).unwrap();
9711
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9712
0
        let layer_result = instance_info
9713
0
            .customized_info
9714
0
            .borrow()
9715
0
            .hooks()
9716
0
            .destroy_debug_report_callback_ext(callback, unsafe { p_allocator.as_ref() });
9717
0
        match layer_result {
9718
0
            LayerResult::Handled(res) => res,
9719
            LayerResult::Unhandled => unsafe {
9720
0
                (dispatch_table.destroy_debug_report_callback_ext)(instance, callback, p_allocator)
9721
            },
9722
        }
9723
0
    }
9724
0
    extern "system" fn debug_report_message_ext(
9725
0
        instance: vk::Instance,
9726
0
        flags: vk::DebugReportFlagsEXT,
9727
0
        object_type: vk::DebugReportObjectTypeEXT,
9728
0
        object: u64,
9729
0
        location: usize,
9730
0
        message_code: i32,
9731
0
        p_layer_prefix: *const c_char,
9732
0
        p_message: *const c_char,
9733
0
    ) {
9734
0
        let global = Self::instance();
9735
0
        // vkDebugReportMessageEXT
9736
0
        let instance_info = global.get_instance_info(instance).unwrap();
9737
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9738
0
        let layer_result = instance_info
9739
0
            .customized_info
9740
0
            .borrow()
9741
0
            .hooks()
9742
0
            .debug_report_message_ext(
9743
0
                flags,
9744
0
                object_type,
9745
0
                object,
9746
0
                location,
9747
0
                message_code,
9748
0
                unsafe { CStr::from_ptr(p_layer_prefix) }.to_str().unwrap(),
9749
0
                unsafe { CStr::from_ptr(p_message) }.to_str().unwrap(),
9750
0
            );
9751
0
        match layer_result {
9752
0
            LayerResult::Handled(res) => res,
9753
            LayerResult::Unhandled => unsafe {
9754
0
                (dispatch_table.debug_report_message_ext)(
9755
0
                    instance,
9756
0
                    flags,
9757
0
                    object_type,
9758
0
                    object,
9759
0
                    location,
9760
0
                    message_code,
9761
0
                    p_layer_prefix,
9762
0
                    p_message,
9763
0
                )
9764
            },
9765
        }
9766
0
    }
9767
0
    extern "system" fn create_stream_descriptor_surface_ggp(
9768
0
        instance: vk::Instance,
9769
0
        p_create_info: *const vk::StreamDescriptorSurfaceCreateInfoGGP,
9770
0
        p_allocator: *const vk::AllocationCallbacks,
9771
0
        p_surface: *mut vk::SurfaceKHR,
9772
0
    ) -> vk::Result {
9773
0
        let global = Self::instance();
9774
0
        // vkCreateStreamDescriptorSurfaceGGP
9775
0
        let instance_info = global.get_instance_info(instance).unwrap();
9776
0
        let dispatch_table = &instance_info.dispatch_table.ggp_stream_descriptor_surface;
9777
0
        let layer_result = instance_info
9778
0
            .customized_info
9779
0
            .borrow()
9780
0
            .hooks()
9781
0
            .create_stream_descriptor_surface_ggp(
9782
0
                unsafe { p_create_info.as_ref() }.unwrap(),
9783
0
                unsafe { p_allocator.as_ref() },
9784
0
            );
9785
0
        match layer_result {
9786
0
            LayerResult::Handled(res) => match res {
9787
0
                Ok(res) => {
9788
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9789
0
                    vk::Result::SUCCESS
9790
                }
9791
0
                Err(e) => e,
9792
            },
9793
            LayerResult::Unhandled => unsafe {
9794
0
                (dispatch_table.create_stream_descriptor_surface_ggp)(
9795
0
                    instance,
9796
0
                    p_create_info,
9797
0
                    p_allocator,
9798
0
                    p_surface,
9799
0
                )
9800
            },
9801
        }
9802
0
    }
9803
0
    extern "system" fn get_physical_device_external_image_format_properties_nv(
9804
0
        physical_device: vk::PhysicalDevice,
9805
0
        format: vk::Format,
9806
0
        _type: vk::ImageType,
9807
0
        tiling: vk::ImageTiling,
9808
0
        usage: vk::ImageUsageFlags,
9809
0
        flags: vk::ImageCreateFlags,
9810
0
        external_handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
9811
0
        p_external_image_format_properties: *mut vk::ExternalImageFormatPropertiesNV,
9812
0
    ) -> vk::Result {
9813
0
        let global = Self::instance();
9814
0
        // vkGetPhysicalDeviceExternalImageFormatPropertiesNV
9815
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9816
0
        let dispatch_table = &instance_info.dispatch_table.nv_external_memory_capabilities;
9817
0
        let layer_result = instance_info
9818
0
            .customized_info
9819
0
            .borrow()
9820
0
            .hooks()
9821
0
            .get_physical_device_external_image_format_properties_nv(
9822
0
                physical_device,
9823
0
                format,
9824
0
                _type,
9825
0
                tiling,
9826
0
                usage,
9827
0
                flags,
9828
0
                external_handle_type,
9829
0
                unsafe { p_external_image_format_properties.as_mut() }.unwrap(),
9830
0
            );
9831
0
        match layer_result {
9832
0
            LayerResult::Handled(res) => match res {
9833
0
                Ok(()) => vk::Result::SUCCESS,
9834
0
                Err(e) => e,
9835
            },
9836
            LayerResult::Unhandled => unsafe {
9837
0
                (dispatch_table.get_physical_device_external_image_format_properties_nv)(
9838
0
                    physical_device,
9839
0
                    format,
9840
0
                    _type,
9841
0
                    tiling,
9842
0
                    usage,
9843
0
                    flags,
9844
0
                    external_handle_type,
9845
0
                    p_external_image_format_properties,
9846
0
                )
9847
            },
9848
        }
9849
0
    }
9850
0
    extern "system" fn create_vi_surface_nn(
9851
0
        instance: vk::Instance,
9852
0
        p_create_info: *const vk::ViSurfaceCreateInfoNN,
9853
0
        p_allocator: *const vk::AllocationCallbacks,
9854
0
        p_surface: *mut vk::SurfaceKHR,
9855
0
    ) -> vk::Result {
9856
0
        let global = Self::instance();
9857
0
        // vkCreateViSurfaceNN
9858
0
        let instance_info = global.get_instance_info(instance).unwrap();
9859
0
        let dispatch_table = &instance_info.dispatch_table.nn_vi_surface;
9860
0
        let layer_result = instance_info
9861
0
            .customized_info
9862
0
            .borrow()
9863
0
            .hooks()
9864
0
            .create_vi_surface_nn(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9865
0
                p_allocator.as_ref()
9866
0
            });
9867
0
        match layer_result {
9868
0
            LayerResult::Handled(res) => match res {
9869
0
                Ok(res) => {
9870
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9871
0
                    vk::Result::SUCCESS
9872
                }
9873
0
                Err(e) => e,
9874
            },
9875
            LayerResult::Unhandled => unsafe {
9876
0
                (dispatch_table.create_vi_surface_nn)(
9877
0
                    instance,
9878
0
                    p_create_info,
9879
0
                    p_allocator,
9880
0
                    p_surface,
9881
0
                )
9882
            },
9883
        }
9884
0
    }
9885
0
    extern "system" fn release_display_ext(
9886
0
        physical_device: vk::PhysicalDevice,
9887
0
        display: vk::DisplayKHR,
9888
0
    ) -> vk::Result {
9889
0
        let global = Self::instance();
9890
0
        // vkReleaseDisplayEXT
9891
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9892
0
        let dispatch_table = &instance_info.dispatch_table.ext_direct_mode_display;
9893
0
        let layer_result = instance_info
9894
0
            .customized_info
9895
0
            .borrow()
9896
0
            .hooks()
9897
0
            .release_display_ext(physical_device, display);
9898
0
        match layer_result {
9899
0
            LayerResult::Handled(res) => match res {
9900
0
                Ok(()) => vk::Result::SUCCESS,
9901
0
                Err(e) => e,
9902
            },
9903
            LayerResult::Unhandled => unsafe {
9904
0
                (dispatch_table.release_display_ext)(physical_device, display)
9905
            },
9906
        }
9907
0
    }
9908
0
    extern "system" fn acquire_xlib_display_ext(
9909
0
        physical_device: vk::PhysicalDevice,
9910
0
        dpy: *mut vk::Display,
9911
0
        display: vk::DisplayKHR,
9912
0
    ) -> vk::Result {
9913
0
        let global = Self::instance();
9914
0
        // vkAcquireXlibDisplayEXT
9915
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9916
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9917
0
        let layer_result = instance_info
9918
0
            .customized_info
9919
0
            .borrow()
9920
0
            .hooks()
9921
0
            .acquire_xlib_display_ext(physical_device, unsafe { dpy.as_mut() }.unwrap(), display);
9922
0
        match layer_result {
9923
0
            LayerResult::Handled(res) => match res {
9924
0
                Ok(()) => vk::Result::SUCCESS,
9925
0
                Err(e) => e,
9926
            },
9927
            LayerResult::Unhandled => unsafe {
9928
0
                (dispatch_table.acquire_xlib_display_ext)(physical_device, dpy, display)
9929
            },
9930
        }
9931
0
    }
9932
0
    extern "system" fn get_rand_r_output_display_ext(
9933
0
        physical_device: vk::PhysicalDevice,
9934
0
        dpy: *mut vk::Display,
9935
0
        rr_output: vk::RROutput,
9936
0
        p_display: *mut vk::DisplayKHR,
9937
0
    ) -> vk::Result {
9938
0
        let global = Self::instance();
9939
0
        // vkGetRandROutputDisplayEXT
9940
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9941
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9942
0
        let layer_result = instance_info
9943
0
            .customized_info
9944
0
            .borrow()
9945
0
            .hooks()
9946
0
            .get_rand_r_output_display_ext(
9947
0
                physical_device,
9948
0
                unsafe { dpy.as_mut() }.unwrap(),
9949
0
                rr_output,
9950
0
            );
9951
0
        match layer_result {
9952
0
            LayerResult::Handled(res) => match res {
9953
0
                Ok(res) => {
9954
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
9955
0
                    vk::Result::SUCCESS
9956
                }
9957
0
                Err(e) => e,
9958
            },
9959
            LayerResult::Unhandled => unsafe {
9960
0
                (dispatch_table.get_rand_r_output_display_ext)(
9961
0
                    physical_device,
9962
0
                    dpy,
9963
0
                    rr_output,
9964
0
                    p_display,
9965
0
                )
9966
            },
9967
        }
9968
0
    }
9969
0
    extern "system" fn get_physical_device_surface_capabilities2_ext(
9970
0
        physical_device: vk::PhysicalDevice,
9971
0
        surface: vk::SurfaceKHR,
9972
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2EXT,
9973
0
    ) -> vk::Result {
9974
0
        let global = Self::instance();
9975
0
        // vkGetPhysicalDeviceSurfaceCapabilities2EXT
9976
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9977
0
        let dispatch_table = &instance_info.dispatch_table.ext_display_surface_counter;
9978
0
        let layer_result = instance_info
9979
0
            .customized_info
9980
0
            .borrow()
9981
0
            .hooks()
9982
0
            .get_physical_device_surface_capabilities2_ext(
9983
0
                physical_device,
9984
0
                surface,
9985
0
                unsafe { p_surface_capabilities.as_mut() }.unwrap(),
9986
0
            );
9987
0
        match layer_result {
9988
0
            LayerResult::Handled(res) => match res {
9989
0
                Ok(()) => vk::Result::SUCCESS,
9990
0
                Err(e) => e,
9991
            },
9992
            LayerResult::Unhandled => unsafe {
9993
0
                (dispatch_table.get_physical_device_surface_capabilities2_ext)(
9994
0
                    physical_device,
9995
0
                    surface,
9996
0
                    p_surface_capabilities,
9997
0
                )
9998
            },
9999
        }
10000
0
    }
10001
0
    extern "system" fn create_ios_surface_mvk(
10002
0
        instance: vk::Instance,
10003
0
        p_create_info: *const vk::IOSSurfaceCreateInfoMVK,
10004
0
        p_allocator: *const vk::AllocationCallbacks,
10005
0
        p_surface: *mut vk::SurfaceKHR,
10006
0
    ) -> vk::Result {
10007
0
        let global = Self::instance();
10008
0
        // vkCreateIOSSurfaceMVK
10009
0
        let instance_info = global.get_instance_info(instance).unwrap();
10010
0
        let dispatch_table = &instance_info.dispatch_table.mvk_ios_surface;
10011
0
        let layer_result = instance_info
10012
0
            .customized_info
10013
0
            .borrow()
10014
0
            .hooks()
10015
0
            .create_ios_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10016
0
                p_allocator.as_ref()
10017
0
            });
10018
0
        match layer_result {
10019
0
            LayerResult::Handled(res) => match res {
10020
0
                Ok(res) => {
10021
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10022
0
                    vk::Result::SUCCESS
10023
                }
10024
0
                Err(e) => e,
10025
            },
10026
            LayerResult::Unhandled => unsafe {
10027
0
                (dispatch_table.create_ios_surface_mvk)(
10028
0
                    instance,
10029
0
                    p_create_info,
10030
0
                    p_allocator,
10031
0
                    p_surface,
10032
0
                )
10033
            },
10034
        }
10035
0
    }
10036
0
    extern "system" fn create_mac_os_surface_mvk(
10037
0
        instance: vk::Instance,
10038
0
        p_create_info: *const vk::MacOSSurfaceCreateInfoMVK,
10039
0
        p_allocator: *const vk::AllocationCallbacks,
10040
0
        p_surface: *mut vk::SurfaceKHR,
10041
0
    ) -> vk::Result {
10042
0
        let global = Self::instance();
10043
0
        // vkCreateMacOSSurfaceMVK
10044
0
        let instance_info = global.get_instance_info(instance).unwrap();
10045
0
        let dispatch_table = &instance_info.dispatch_table.mvk_macos_surface;
10046
0
        let layer_result = instance_info
10047
0
            .customized_info
10048
0
            .borrow()
10049
0
            .hooks()
10050
0
            .create_mac_os_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10051
0
                p_allocator.as_ref()
10052
0
            });
10053
0
        match layer_result {
10054
0
            LayerResult::Handled(res) => match res {
10055
0
                Ok(res) => {
10056
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10057
0
                    vk::Result::SUCCESS
10058
                }
10059
0
                Err(e) => e,
10060
            },
10061
            LayerResult::Unhandled => unsafe {
10062
0
                (dispatch_table.create_mac_os_surface_mvk)(
10063
0
                    instance,
10064
0
                    p_create_info,
10065
0
                    p_allocator,
10066
0
                    p_surface,
10067
0
                )
10068
            },
10069
        }
10070
0
    }
10071
0
    extern "system" fn create_debug_utils_messenger_ext(
10072
0
        instance: vk::Instance,
10073
0
        p_create_info: *const vk::DebugUtilsMessengerCreateInfoEXT,
10074
0
        p_allocator: *const vk::AllocationCallbacks,
10075
0
        p_messenger: *mut vk::DebugUtilsMessengerEXT,
10076
0
    ) -> vk::Result {
10077
0
        let global = Self::instance();
10078
0
        // vkCreateDebugUtilsMessengerEXT
10079
0
        let instance_info = global.get_instance_info(instance).unwrap();
10080
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
10081
0
        let layer_result = instance_info
10082
0
            .customized_info
10083
0
            .borrow()
10084
0
            .hooks()
10085
0
            .create_debug_utils_messenger_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10086
0
                p_allocator.as_ref()
10087
0
            });
10088
0
        match layer_result {
10089
0
            LayerResult::Handled(res) => match res {
10090
0
                Ok(res) => {
10091
0
                    *unsafe { p_messenger.as_mut() }.unwrap() = res;
10092
0
                    vk::Result::SUCCESS
10093
                }
10094
0
                Err(e) => e,
10095
            },
10096
            LayerResult::Unhandled => unsafe {
10097
0
                (dispatch_table.create_debug_utils_messenger_ext)(
10098
0
                    instance,
10099
0
                    p_create_info,
10100
0
                    p_allocator,
10101
0
                    p_messenger,
10102
0
                )
10103
            },
10104
        }
10105
0
    }
10106
0
    extern "system" fn destroy_debug_utils_messenger_ext(
10107
0
        instance: vk::Instance,
10108
0
        messenger: vk::DebugUtilsMessengerEXT,
10109
0
        p_allocator: *const vk::AllocationCallbacks,
10110
0
    ) {
10111
0
        let global = Self::instance();
10112
0
        // vkDestroyDebugUtilsMessengerEXT
10113
0
        let instance_info = global.get_instance_info(instance).unwrap();
10114
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
10115
0
        let layer_result = instance_info
10116
0
            .customized_info
10117
0
            .borrow()
10118
0
            .hooks()
10119
0
            .destroy_debug_utils_messenger_ext(messenger, unsafe { p_allocator.as_ref() });
10120
0
        match layer_result {
10121
0
            LayerResult::Handled(res) => res,
10122
            LayerResult::Unhandled => unsafe {
10123
0
                (dispatch_table.destroy_debug_utils_messenger_ext)(instance, messenger, p_allocator)
10124
            },
10125
        }
10126
0
    }
10127
0
    extern "system" fn submit_debug_utils_message_ext(
10128
0
        instance: vk::Instance,
10129
0
        message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
10130
0
        message_types: vk::DebugUtilsMessageTypeFlagsEXT,
10131
0
        p_callback_data: *const vk::DebugUtilsMessengerCallbackDataEXT,
10132
0
    ) {
10133
0
        let global = Self::instance();
10134
0
        // vkSubmitDebugUtilsMessageEXT
10135
0
        let instance_info = global.get_instance_info(instance).unwrap();
10136
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
10137
0
        let layer_result = instance_info
10138
0
            .customized_info
10139
0
            .borrow()
10140
0
            .hooks()
10141
0
            .submit_debug_utils_message_ext(
10142
0
                message_severity,
10143
0
                message_types,
10144
0
                unsafe { p_callback_data.as_ref() }.unwrap(),
10145
0
            );
10146
0
        match layer_result {
10147
0
            LayerResult::Handled(res) => res,
10148
            LayerResult::Unhandled => unsafe {
10149
0
                (dispatch_table.submit_debug_utils_message_ext)(
10150
0
                    instance,
10151
0
                    message_severity,
10152
0
                    message_types,
10153
0
                    p_callback_data,
10154
0
                )
10155
            },
10156
        }
10157
0
    }
10158
0
    extern "system" fn get_physical_device_multisample_properties_ext(
10159
0
        physical_device: vk::PhysicalDevice,
10160
0
        samples: vk::SampleCountFlags,
10161
0
        p_multisample_properties: *mut vk::MultisamplePropertiesEXT,
10162
0
    ) {
10163
0
        let global = Self::instance();
10164
0
        // vkGetPhysicalDeviceMultisamplePropertiesEXT
10165
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10166
0
        let dispatch_table = &instance_info.dispatch_table.ext_sample_locations;
10167
0
        let layer_result = instance_info
10168
0
            .customized_info
10169
0
            .borrow()
10170
0
            .hooks()
10171
0
            .get_physical_device_multisample_properties_ext(
10172
0
                physical_device,
10173
0
                samples,
10174
0
                unsafe { p_multisample_properties.as_mut() }.unwrap(),
10175
0
            );
10176
0
        match layer_result {
10177
0
            LayerResult::Handled(res) => res,
10178
            LayerResult::Unhandled => unsafe {
10179
0
                (dispatch_table.get_physical_device_multisample_properties_ext)(
10180
0
                    physical_device,
10181
0
                    samples,
10182
0
                    p_multisample_properties,
10183
0
                )
10184
            },
10185
        }
10186
0
    }
10187
0
    extern "system" fn get_physical_device_calibrateable_time_domains_ext(
10188
0
        physical_device: vk::PhysicalDevice,
10189
0
        p_time_domain_count: *mut u32,
10190
0
        p_time_domains: *mut vk::TimeDomainEXT,
10191
0
    ) -> vk::Result {
10192
0
        let global = Self::instance();
10193
0
        // vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
10194
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10195
0
        let dispatch_table = &instance_info.dispatch_table.ext_calibrated_timestamps;
10196
0
        let layer_result = instance_info
10197
0
            .customized_info
10198
0
            .borrow()
10199
0
            .hooks()
10200
0
            .get_physical_device_calibrateable_time_domains_ext(physical_device);
10201
0
        match layer_result {
10202
0
            LayerResult::Handled(res) => match res {
10203
0
                Ok(res) => unsafe {
10204
0
                    fill_vk_out_array(
10205
0
                        &res,
10206
0
                        NonNull::new(p_time_domain_count).unwrap(),
10207
0
                        p_time_domains,
10208
0
                    )
10209
                },
10210
0
                Err(e) => e,
10211
            },
10212
            LayerResult::Unhandled => unsafe {
10213
0
                (dispatch_table.get_physical_device_calibrateable_time_domains_ext)(
10214
0
                    physical_device,
10215
0
                    p_time_domain_count,
10216
0
                    p_time_domains,
10217
0
                )
10218
            },
10219
        }
10220
0
    }
10221
0
    extern "system" fn create_image_pipe_surface_fuchsia(
10222
0
        instance: vk::Instance,
10223
0
        p_create_info: *const vk::ImagePipeSurfaceCreateInfoFUCHSIA,
10224
0
        p_allocator: *const vk::AllocationCallbacks,
10225
0
        p_surface: *mut vk::SurfaceKHR,
10226
0
    ) -> vk::Result {
10227
0
        let global = Self::instance();
10228
0
        // vkCreateImagePipeSurfaceFUCHSIA
10229
0
        let instance_info = global.get_instance_info(instance).unwrap();
10230
0
        let dispatch_table = &instance_info.dispatch_table.fuchsia_imagepipe_surface;
10231
0
        let layer_result = instance_info
10232
0
            .customized_info
10233
0
            .borrow()
10234
0
            .hooks()
10235
0
            .create_image_pipe_surface_fuchsia(
10236
0
                unsafe { p_create_info.as_ref() }.unwrap(),
10237
0
                unsafe { p_allocator.as_ref() },
10238
0
            );
10239
0
        match layer_result {
10240
0
            LayerResult::Handled(res) => match res {
10241
0
                Ok(res) => {
10242
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10243
0
                    vk::Result::SUCCESS
10244
                }
10245
0
                Err(e) => e,
10246
            },
10247
            LayerResult::Unhandled => unsafe {
10248
0
                (dispatch_table.create_image_pipe_surface_fuchsia)(
10249
0
                    instance,
10250
0
                    p_create_info,
10251
0
                    p_allocator,
10252
0
                    p_surface,
10253
0
                )
10254
            },
10255
        }
10256
0
    }
10257
0
    extern "system" fn create_metal_surface_ext(
10258
0
        instance: vk::Instance,
10259
0
        p_create_info: *const vk::MetalSurfaceCreateInfoEXT,
10260
0
        p_allocator: *const vk::AllocationCallbacks,
10261
0
        p_surface: *mut vk::SurfaceKHR,
10262
0
    ) -> vk::Result {
10263
0
        let global = Self::instance();
10264
0
        // vkCreateMetalSurfaceEXT
10265
0
        let instance_info = global.get_instance_info(instance).unwrap();
10266
0
        let dispatch_table = &instance_info.dispatch_table.ext_metal_surface;
10267
0
        let layer_result = instance_info
10268
0
            .customized_info
10269
0
            .borrow()
10270
0
            .hooks()
10271
0
            .create_metal_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10272
0
                p_allocator.as_ref()
10273
0
            });
10274
0
        match layer_result {
10275
0
            LayerResult::Handled(res) => match res {
10276
0
                Ok(res) => {
10277
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10278
0
                    vk::Result::SUCCESS
10279
                }
10280
0
                Err(e) => e,
10281
            },
10282
            LayerResult::Unhandled => unsafe {
10283
0
                (dispatch_table.create_metal_surface_ext)(
10284
0
                    instance,
10285
0
                    p_create_info,
10286
0
                    p_allocator,
10287
0
                    p_surface,
10288
0
                )
10289
            },
10290
        }
10291
0
    }
10292
0
    extern "system" fn get_physical_device_cooperative_matrix_properties_nv(
10293
0
        physical_device: vk::PhysicalDevice,
10294
0
        p_property_count: *mut u32,
10295
0
        p_properties: *mut vk::CooperativeMatrixPropertiesNV,
10296
0
    ) -> vk::Result {
10297
0
        let global = Self::instance();
10298
0
        // vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
10299
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10300
0
        let dispatch_table = &instance_info.dispatch_table.nv_cooperative_matrix;
10301
        #[allow(clippy::unnecessary_cast)]
10302
0
        let layer_result = instance_info
10303
0
            .customized_info
10304
0
            .borrow()
10305
0
            .hooks()
10306
0
            .get_physical_device_cooperative_matrix_properties_nv(
10307
0
                physical_device,
10308
0
                if p_properties.is_null() {
10309
0
                    None
10310
                } else {
10311
0
                    Some(unsafe {
10312
0
                        std::slice::from_raw_parts_mut(
10313
0
                            p_properties,
10314
0
                            *unsafe { p_property_count.as_ref() }.unwrap() as usize,
10315
0
                        )
10316
0
                    })
10317
                },
10318
            );
10319
0
        match layer_result {
10320
0
            LayerResult::Handled(res) => match res {
10321
0
                Ok(()) => vk::Result::SUCCESS,
10322
0
                Err(e) => e,
10323
            },
10324
            LayerResult::Unhandled => unsafe {
10325
0
                (dispatch_table.get_physical_device_cooperative_matrix_properties_nv)(
10326
0
                    physical_device,
10327
0
                    p_property_count,
10328
0
                    p_properties,
10329
0
                )
10330
            },
10331
        }
10332
0
    }
10333
0
    extern "system" fn get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10334
0
        physical_device: vk::PhysicalDevice,
10335
0
        p_combination_count: *mut u32,
10336
0
        p_combinations: *mut vk::FramebufferMixedSamplesCombinationNV,
10337
0
    ) -> vk::Result {
10338
0
        let global = Self::instance();
10339
0
        // vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
10340
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10341
0
        let dispatch_table = &instance_info.dispatch_table.nv_coverage_reduction_mode;
10342
        #[allow(clippy::unnecessary_cast)]
10343
0
        let layer_result = instance_info
10344
0
            .customized_info
10345
0
            .borrow()
10346
0
            .hooks()
10347
0
            .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10348
0
                physical_device,
10349
0
                if p_combinations.is_null() {
10350
0
                    None
10351
                } else {
10352
0
                    Some(unsafe {
10353
0
                        std::slice::from_raw_parts_mut(
10354
0
                            p_combinations,
10355
0
                            *unsafe { p_combination_count.as_ref() }.unwrap() as usize,
10356
0
                        )
10357
0
                    })
10358
                },
10359
            );
10360
0
        match layer_result {
10361
0
            LayerResult::Handled(res) => match res {
10362
0
                Ok(()) => vk::Result::SUCCESS,
10363
0
                Err(e) => e,
10364
            },
10365
            LayerResult::Unhandled => unsafe {
10366
0
                (dispatch_table
10367
0
                    .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)(
10368
0
                    physical_device,
10369
0
                    p_combination_count,
10370
0
                    p_combinations,
10371
0
                )
10372
            },
10373
        }
10374
0
    }
10375
0
    extern "system" fn get_physical_device_surface_present_modes2_ext(
10376
0
        physical_device: vk::PhysicalDevice,
10377
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
10378
0
        p_present_mode_count: *mut u32,
10379
0
        p_present_modes: *mut vk::PresentModeKHR,
10380
0
    ) -> vk::Result {
10381
0
        let global = Self::instance();
10382
0
        // vkGetPhysicalDeviceSurfacePresentModes2EXT
10383
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10384
0
        let dispatch_table = &instance_info.dispatch_table.ext_full_screen_exclusive;
10385
0
        let layer_result = instance_info
10386
0
            .customized_info
10387
0
            .borrow()
10388
0
            .hooks()
10389
0
            .get_physical_device_surface_present_modes2_ext(
10390
0
                physical_device,
10391
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
10392
0
            );
10393
0
        match layer_result {
10394
0
            LayerResult::Handled(res) => match res {
10395
0
                Ok(res) => unsafe {
10396
0
                    fill_vk_out_array(
10397
0
                        &res,
10398
0
                        NonNull::new(p_present_mode_count).unwrap(),
10399
0
                        p_present_modes,
10400
0
                    )
10401
                },
10402
0
                Err(e) => e,
10403
            },
10404
            LayerResult::Unhandled => unsafe {
10405
0
                (dispatch_table.get_physical_device_surface_present_modes2_ext)(
10406
0
                    physical_device,
10407
0
                    p_surface_info,
10408
0
                    p_present_mode_count,
10409
0
                    p_present_modes,
10410
0
                )
10411
            },
10412
        }
10413
0
    }
10414
0
    extern "system" fn create_headless_surface_ext(
10415
0
        instance: vk::Instance,
10416
0
        p_create_info: *const vk::HeadlessSurfaceCreateInfoEXT,
10417
0
        p_allocator: *const vk::AllocationCallbacks,
10418
0
        p_surface: *mut vk::SurfaceKHR,
10419
0
    ) -> vk::Result {
10420
0
        let global = Self::instance();
10421
0
        // vkCreateHeadlessSurfaceEXT
10422
0
        let instance_info = global.get_instance_info(instance).unwrap();
10423
0
        let dispatch_table = &instance_info.dispatch_table.ext_headless_surface;
10424
0
        let layer_result = instance_info
10425
0
            .customized_info
10426
0
            .borrow()
10427
0
            .hooks()
10428
0
            .create_headless_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10429
0
                p_allocator.as_ref()
10430
0
            });
10431
0
        match layer_result {
10432
0
            LayerResult::Handled(res) => match res {
10433
0
                Ok(res) => {
10434
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10435
0
                    vk::Result::SUCCESS
10436
                }
10437
0
                Err(e) => e,
10438
            },
10439
            LayerResult::Unhandled => unsafe {
10440
0
                (dispatch_table.create_headless_surface_ext)(
10441
0
                    instance,
10442
0
                    p_create_info,
10443
0
                    p_allocator,
10444
0
                    p_surface,
10445
0
                )
10446
            },
10447
        }
10448
0
    }
10449
0
    extern "system" fn acquire_drm_display_ext(
10450
0
        physical_device: vk::PhysicalDevice,
10451
0
        drm_fd: i32,
10452
0
        display: vk::DisplayKHR,
10453
0
    ) -> vk::Result {
10454
0
        let global = Self::instance();
10455
0
        // vkAcquireDrmDisplayEXT
10456
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10457
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10458
0
        let layer_result = instance_info
10459
0
            .customized_info
10460
0
            .borrow()
10461
0
            .hooks()
10462
0
            .acquire_drm_display_ext(physical_device, drm_fd, display);
10463
0
        match layer_result {
10464
0
            LayerResult::Handled(res) => match res {
10465
0
                Ok(()) => vk::Result::SUCCESS,
10466
0
                Err(e) => e,
10467
            },
10468
            LayerResult::Unhandled => unsafe {
10469
0
                (dispatch_table.acquire_drm_display_ext)(physical_device, drm_fd, display)
10470
            },
10471
        }
10472
0
    }
10473
0
    extern "system" fn get_drm_display_ext(
10474
0
        physical_device: vk::PhysicalDevice,
10475
0
        drm_fd: i32,
10476
0
        connector_id: u32,
10477
0
        display: *mut vk::DisplayKHR,
10478
0
    ) -> vk::Result {
10479
0
        let global = Self::instance();
10480
0
        // vkGetDrmDisplayEXT
10481
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10482
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10483
0
        let layer_result = instance_info
10484
0
            .customized_info
10485
0
            .borrow()
10486
0
            .hooks()
10487
0
            .get_drm_display_ext(physical_device, drm_fd, connector_id);
10488
0
        match layer_result {
10489
0
            LayerResult::Handled(res) => match res {
10490
0
                Ok(res) => {
10491
0
                    *unsafe { display.as_mut() }.unwrap() = res;
10492
0
                    vk::Result::SUCCESS
10493
                }
10494
0
                Err(e) => e,
10495
            },
10496
            LayerResult::Unhandled => unsafe {
10497
0
                (dispatch_table.get_drm_display_ext)(physical_device, drm_fd, connector_id, display)
10498
            },
10499
        }
10500
0
    }
10501
0
    extern "system" fn acquire_winrt_display_nv(
10502
0
        physical_device: vk::PhysicalDevice,
10503
0
        display: vk::DisplayKHR,
10504
0
    ) -> vk::Result {
10505
0
        let global = Self::instance();
10506
0
        // vkAcquireWinrtDisplayNV
10507
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10508
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10509
0
        let layer_result = instance_info
10510
0
            .customized_info
10511
0
            .borrow()
10512
0
            .hooks()
10513
0
            .acquire_winrt_display_nv(physical_device, display);
10514
0
        match layer_result {
10515
0
            LayerResult::Handled(res) => match res {
10516
0
                Ok(()) => vk::Result::SUCCESS,
10517
0
                Err(e) => e,
10518
            },
10519
            LayerResult::Unhandled => unsafe {
10520
0
                (dispatch_table.acquire_winrt_display_nv)(physical_device, display)
10521
            },
10522
        }
10523
0
    }
10524
0
    extern "system" fn get_winrt_display_nv(
10525
0
        physical_device: vk::PhysicalDevice,
10526
0
        device_relative_id: u32,
10527
0
        p_display: *mut vk::DisplayKHR,
10528
0
    ) -> vk::Result {
10529
0
        let global = Self::instance();
10530
0
        // vkGetWinrtDisplayNV
10531
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10532
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10533
0
        let layer_result = instance_info
10534
0
            .customized_info
10535
0
            .borrow()
10536
0
            .hooks()
10537
0
            .get_winrt_display_nv(physical_device, device_relative_id);
10538
0
        match layer_result {
10539
0
            LayerResult::Handled(res) => match res {
10540
0
                Ok(res) => {
10541
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
10542
0
                    vk::Result::SUCCESS
10543
                }
10544
0
                Err(e) => e,
10545
            },
10546
            LayerResult::Unhandled => unsafe {
10547
0
                (dispatch_table.get_winrt_display_nv)(
10548
0
                    physical_device,
10549
0
                    device_relative_id,
10550
0
                    p_display,
10551
0
                )
10552
            },
10553
        }
10554
0
    }
10555
0
    extern "system" fn create_direct_fb_surface_ext(
10556
0
        instance: vk::Instance,
10557
0
        p_create_info: *const vk::DirectFBSurfaceCreateInfoEXT,
10558
0
        p_allocator: *const vk::AllocationCallbacks,
10559
0
        p_surface: *mut vk::SurfaceKHR,
10560
0
    ) -> vk::Result {
10561
0
        let global = Self::instance();
10562
0
        // vkCreateDirectFBSurfaceEXT
10563
0
        let instance_info = global.get_instance_info(instance).unwrap();
10564
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10565
0
        let layer_result = instance_info
10566
0
            .customized_info
10567
0
            .borrow()
10568
0
            .hooks()
10569
0
            .create_direct_fb_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10570
0
                p_allocator.as_ref()
10571
0
            });
10572
0
        match layer_result {
10573
0
            LayerResult::Handled(res) => match res {
10574
0
                Ok(res) => {
10575
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10576
0
                    vk::Result::SUCCESS
10577
                }
10578
0
                Err(e) => e,
10579
            },
10580
            LayerResult::Unhandled => unsafe {
10581
0
                (dispatch_table.create_direct_fb_surface_ext)(
10582
0
                    instance,
10583
0
                    p_create_info,
10584
0
                    p_allocator,
10585
0
                    p_surface,
10586
0
                )
10587
            },
10588
        }
10589
0
    }
10590
0
    extern "system" fn get_physical_device_direct_fb_presentation_support_ext(
10591
0
        physical_device: vk::PhysicalDevice,
10592
0
        queue_family_index: u32,
10593
0
        dfb: *mut vk::IDirectFB,
10594
0
    ) -> vk::Bool32 {
10595
0
        let global = Self::instance();
10596
0
        // vkGetPhysicalDeviceDirectFBPresentationSupportEXT
10597
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10598
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10599
0
        let layer_result = instance_info
10600
0
            .customized_info
10601
0
            .borrow()
10602
0
            .hooks()
10603
0
            .get_physical_device_direct_fb_presentation_support_ext(
10604
0
                physical_device,
10605
0
                queue_family_index,
10606
0
                unsafe { dfb.as_mut() }.unwrap(),
10607
0
            );
10608
0
        match layer_result {
10609
0
            LayerResult::Handled(res) => {
10610
0
                if res {
10611
0
                    vk::TRUE
10612
                } else {
10613
0
                    vk::FALSE
10614
                }
10615
            }
10616
            LayerResult::Unhandled => unsafe {
10617
0
                (dispatch_table.get_physical_device_direct_fb_presentation_support_ext)(
10618
0
                    physical_device,
10619
0
                    queue_family_index,
10620
0
                    dfb,
10621
0
                )
10622
            },
10623
        }
10624
0
    }
10625
0
    extern "system" fn create_screen_surface_qnx(
10626
0
        instance: vk::Instance,
10627
0
        p_create_info: *const vk::ScreenSurfaceCreateInfoQNX,
10628
0
        p_allocator: *const vk::AllocationCallbacks,
10629
0
        p_surface: *mut vk::SurfaceKHR,
10630
0
    ) -> vk::Result {
10631
0
        let global = Self::instance();
10632
0
        // vkCreateScreenSurfaceQNX
10633
0
        let instance_info = global.get_instance_info(instance).unwrap();
10634
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10635
0
        let layer_result = instance_info
10636
0
            .customized_info
10637
0
            .borrow()
10638
0
            .hooks()
10639
0
            .create_screen_surface_qnx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10640
0
                p_allocator.as_ref()
10641
0
            });
10642
0
        match layer_result {
10643
0
            LayerResult::Handled(res) => match res {
10644
0
                Ok(res) => {
10645
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10646
0
                    vk::Result::SUCCESS
10647
                }
10648
0
                Err(e) => e,
10649
            },
10650
            LayerResult::Unhandled => unsafe {
10651
0
                (dispatch_table.create_screen_surface_qnx)(
10652
0
                    instance,
10653
0
                    p_create_info,
10654
0
                    p_allocator,
10655
0
                    p_surface,
10656
0
                )
10657
            },
10658
        }
10659
0
    }
10660
0
    extern "system" fn get_physical_device_screen_presentation_support_qnx(
10661
0
        physical_device: vk::PhysicalDevice,
10662
0
        queue_family_index: u32,
10663
0
        window: *mut vk::_screen_window,
10664
0
    ) -> vk::Bool32 {
10665
0
        let global = Self::instance();
10666
0
        // vkGetPhysicalDeviceScreenPresentationSupportQNX
10667
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10668
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10669
0
        let layer_result = instance_info
10670
0
            .customized_info
10671
0
            .borrow()
10672
0
            .hooks()
10673
0
            .get_physical_device_screen_presentation_support_qnx(
10674
0
                physical_device,
10675
0
                queue_family_index,
10676
0
                unsafe { window.as_mut() }.unwrap(),
10677
0
            );
10678
0
        match layer_result {
10679
0
            LayerResult::Handled(res) => {
10680
0
                if res {
10681
0
                    vk::TRUE
10682
                } else {
10683
0
                    vk::FALSE
10684
                }
10685
            }
10686
            LayerResult::Unhandled => unsafe {
10687
0
                (dispatch_table.get_physical_device_screen_presentation_support_qnx)(
10688
0
                    physical_device,
10689
0
                    queue_family_index,
10690
0
                    window,
10691
0
                )
10692
            },
10693
        }
10694
0
    }
10695
0
    extern "system" fn get_physical_device_optical_flow_image_formats_nv(
10696
0
        physical_device: vk::PhysicalDevice,
10697
0
        p_optical_flow_image_format_info: *const vk::OpticalFlowImageFormatInfoNV,
10698
0
        p_format_count: *mut u32,
10699
0
        p_image_format_properties: *mut vk::OpticalFlowImageFormatPropertiesNV,
10700
0
    ) -> vk::Result {
10701
0
        let global = Self::instance();
10702
0
        // vkGetPhysicalDeviceOpticalFlowImageFormatsNV
10703
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10704
0
        let dispatch_table = &instance_info.dispatch_table.nv_optical_flow;
10705
        #[allow(clippy::unnecessary_cast)]
10706
0
        let layer_result = instance_info
10707
0
            .customized_info
10708
0
            .borrow()
10709
0
            .hooks()
10710
0
            .get_physical_device_optical_flow_image_formats_nv(
10711
0
                physical_device,
10712
0
                unsafe { p_optical_flow_image_format_info.as_ref() }.unwrap(),
10713
0
                if p_image_format_properties.is_null() {
10714
0
                    None
10715
                } else {
10716
0
                    Some(unsafe {
10717
0
                        std::slice::from_raw_parts_mut(
10718
0
                            p_image_format_properties,
10719
0
                            *unsafe { p_format_count.as_ref() }.unwrap() as usize,
10720
0
                        )
10721
0
                    })
10722
                },
10723
            );
10724
0
        match layer_result {
10725
0
            LayerResult::Handled(res) => match res {
10726
0
                Ok(()) => vk::Result::SUCCESS,
10727
0
                Err(e) => e,
10728
            },
10729
            LayerResult::Unhandled => unsafe {
10730
0
                (dispatch_table.get_physical_device_optical_flow_image_formats_nv)(
10731
0
                    physical_device,
10732
0
                    p_optical_flow_image_format_info,
10733
0
                    p_format_count,
10734
0
                    p_image_format_properties,
10735
0
                )
10736
            },
10737
        }
10738
0
    }
10739
0
    extern "system" fn get_device_queue(
10740
0
        device: vk::Device,
10741
0
        queue_family_index: u32,
10742
0
        queue_index: u32,
10743
0
        p_queue: *mut vk::Queue,
10744
0
    ) {
10745
0
        let global = Self::instance();
10746
0
        // vkGetDeviceQueue
10747
0
        let device_info = global.get_device_info(device).unwrap();
10748
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10749
0
        let layer_result = device_info
10750
0
            .customized_info
10751
0
            .borrow()
10752
0
            .hooks()
10753
0
            .get_device_queue(queue_family_index, queue_index);
10754
0
        match layer_result {
10755
0
            LayerResult::Handled(res) => {
10756
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
10757
0
            }
10758
            LayerResult::Unhandled => unsafe {
10759
0
                (dispatch_table.get_device_queue)(device, queue_family_index, queue_index, p_queue)
10760
            },
10761
        }
10762
0
    }
10763
0
    extern "system" fn queue_submit(
10764
0
        queue: vk::Queue,
10765
0
        submit_count: u32,
10766
0
        p_submits: *const vk::SubmitInfo,
10767
0
        fence: vk::Fence,
10768
0
    ) -> vk::Result {
10769
0
        let global = Self::instance();
10770
0
        // vkQueueSubmit
10771
0
        let device_info = global.get_device_info(queue).unwrap();
10772
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10773
0
        #[allow(clippy::unnecessary_cast)]
10774
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit(
10775
0
            queue,
10776
0
            unsafe { std::slice::from_raw_parts(p_submits, submit_count as usize) },
10777
0
            fence,
10778
0
        );
10779
0
        match layer_result {
10780
0
            LayerResult::Handled(res) => match res {
10781
0
                Ok(()) => vk::Result::SUCCESS,
10782
0
                Err(e) => e,
10783
            },
10784
            LayerResult::Unhandled => unsafe {
10785
0
                (dispatch_table.queue_submit)(queue, submit_count, p_submits, fence)
10786
            },
10787
        }
10788
0
    }
10789
0
    extern "system" fn queue_wait_idle(queue: vk::Queue) -> vk::Result {
10790
0
        let global = Self::instance();
10791
0
        // vkQueueWaitIdle
10792
0
        let device_info = global.get_device_info(queue).unwrap();
10793
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10794
0
        let layer_result = device_info
10795
0
            .customized_info
10796
0
            .borrow()
10797
0
            .hooks()
10798
0
            .queue_wait_idle(queue);
10799
0
        match layer_result {
10800
0
            LayerResult::Handled(res) => match res {
10801
0
                Ok(()) => vk::Result::SUCCESS,
10802
0
                Err(e) => e,
10803
            },
10804
0
            LayerResult::Unhandled => unsafe { (dispatch_table.queue_wait_idle)(queue) },
10805
        }
10806
0
    }
10807
0
    extern "system" fn device_wait_idle(device: vk::Device) -> vk::Result {
10808
0
        let global = Self::instance();
10809
0
        // vkDeviceWaitIdle
10810
0
        let device_info = global.get_device_info(device).unwrap();
10811
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10812
0
        let layer_result = device_info
10813
0
            .customized_info
10814
0
            .borrow()
10815
0
            .hooks()
10816
0
            .device_wait_idle();
10817
0
        match layer_result {
10818
0
            LayerResult::Handled(res) => match res {
10819
0
                Ok(()) => vk::Result::SUCCESS,
10820
0
                Err(e) => e,
10821
            },
10822
0
            LayerResult::Unhandled => unsafe { (dispatch_table.device_wait_idle)(device) },
10823
        }
10824
0
    }
10825
0
    extern "system" fn allocate_memory(
10826
0
        device: vk::Device,
10827
0
        p_allocate_info: *const vk::MemoryAllocateInfo,
10828
0
        p_allocator: *const vk::AllocationCallbacks,
10829
0
        p_memory: *mut vk::DeviceMemory,
10830
0
    ) -> vk::Result {
10831
0
        let global = Self::instance();
10832
0
        // vkAllocateMemory
10833
0
        let device_info = global.get_device_info(device).unwrap();
10834
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10835
0
        let layer_result = device_info
10836
0
            .customized_info
10837
0
            .borrow()
10838
0
            .hooks()
10839
0
            .allocate_memory(unsafe { p_allocate_info.as_ref() }.unwrap(), unsafe {
10840
0
                p_allocator.as_ref()
10841
0
            });
10842
0
        match layer_result {
10843
0
            LayerResult::Handled(res) => match res {
10844
0
                Ok(res) => {
10845
0
                    *unsafe { p_memory.as_mut() }.unwrap() = res;
10846
0
                    vk::Result::SUCCESS
10847
                }
10848
0
                Err(e) => e,
10849
            },
10850
            LayerResult::Unhandled => unsafe {
10851
0
                (dispatch_table.allocate_memory)(device, p_allocate_info, p_allocator, p_memory)
10852
            },
10853
        }
10854
0
    }
10855
0
    extern "system" fn free_memory(
10856
0
        device: vk::Device,
10857
0
        memory: vk::DeviceMemory,
10858
0
        p_allocator: *const vk::AllocationCallbacks,
10859
0
    ) {
10860
0
        let global = Self::instance();
10861
0
        // vkFreeMemory
10862
0
        let device_info = global.get_device_info(device).unwrap();
10863
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10864
0
        let layer_result = device_info
10865
0
            .customized_info
10866
0
            .borrow()
10867
0
            .hooks()
10868
0
            .free_memory(memory, unsafe { p_allocator.as_ref() });
10869
0
        match layer_result {
10870
0
            LayerResult::Handled(res) => res,
10871
            LayerResult::Unhandled => unsafe {
10872
0
                (dispatch_table.free_memory)(device, memory, p_allocator)
10873
            },
10874
        }
10875
0
    }
10876
0
    extern "system" fn map_memory(
10877
0
        device: vk::Device,
10878
0
        memory: vk::DeviceMemory,
10879
0
        offset: vk::DeviceSize,
10880
0
        size: vk::DeviceSize,
10881
0
        flags: vk::MemoryMapFlags,
10882
0
        pp_data: *mut *mut c_void,
10883
0
    ) -> vk::Result {
10884
0
        let global = Self::instance();
10885
0
        // vkMapMemory
10886
0
        let device_info = global.get_device_info(device).unwrap();
10887
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10888
0
        let layer_result = device_info
10889
0
            .customized_info
10890
0
            .borrow()
10891
0
            .hooks()
10892
0
            .map_memory(memory, offset, size, flags);
10893
0
        match layer_result {
10894
0
            LayerResult::Handled(res) => match res {
10895
0
                Ok(res) => {
10896
0
                    *unsafe { pp_data.as_mut() }.unwrap() = res.unwrap_or(std::ptr::null_mut());
10897
0
                    vk::Result::SUCCESS
10898
                }
10899
0
                Err(e) => e,
10900
            },
10901
            LayerResult::Unhandled => unsafe {
10902
0
                (dispatch_table.map_memory)(device, memory, offset, size, flags, pp_data)
10903
            },
10904
        }
10905
0
    }
10906
0
    extern "system" fn unmap_memory(device: vk::Device, memory: vk::DeviceMemory) {
10907
0
        let global = Self::instance();
10908
0
        // vkUnmapMemory
10909
0
        let device_info = global.get_device_info(device).unwrap();
10910
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10911
0
        let layer_result = device_info
10912
0
            .customized_info
10913
0
            .borrow()
10914
0
            .hooks()
10915
0
            .unmap_memory(memory);
10916
0
        match layer_result {
10917
0
            LayerResult::Handled(res) => res,
10918
0
            LayerResult::Unhandled => unsafe { (dispatch_table.unmap_memory)(device, memory) },
10919
        }
10920
0
    }
10921
0
    extern "system" fn flush_mapped_memory_ranges(
10922
0
        device: vk::Device,
10923
0
        memory_range_count: u32,
10924
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10925
0
    ) -> vk::Result {
10926
0
        let global = Self::instance();
10927
0
        // vkFlushMappedMemoryRanges
10928
0
        let device_info = global.get_device_info(device).unwrap();
10929
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10930
0
        #[allow(clippy::unnecessary_cast)]
10931
0
        let layer_result = device_info
10932
0
            .customized_info
10933
0
            .borrow()
10934
0
            .hooks()
10935
0
            .flush_mapped_memory_ranges(unsafe {
10936
0
                std::slice::from_raw_parts(p_memory_ranges, memory_range_count as usize)
10937
0
            });
10938
0
        match layer_result {
10939
0
            LayerResult::Handled(res) => match res {
10940
0
                Ok(()) => vk::Result::SUCCESS,
10941
0
                Err(e) => e,
10942
            },
10943
            LayerResult::Unhandled => unsafe {
10944
0
                (dispatch_table.flush_mapped_memory_ranges)(
10945
0
                    device,
10946
0
                    memory_range_count,
10947
0
                    p_memory_ranges,
10948
0
                )
10949
            },
10950
        }
10951
0
    }
10952
0
    extern "system" fn invalidate_mapped_memory_ranges(
10953
0
        device: vk::Device,
10954
0
        memory_range_count: u32,
10955
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10956
0
    ) -> vk::Result {
10957
0
        let global = Self::instance();
10958
0
        // vkInvalidateMappedMemoryRanges
10959
0
        let device_info = global.get_device_info(device).unwrap();
10960
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10961
0
        #[allow(clippy::unnecessary_cast)]
10962
0
        let layer_result = device_info
10963
0
            .customized_info
10964
0
            .borrow()
10965
0
            .hooks()
10966
0
            .invalidate_mapped_memory_ranges(unsafe {
10967
0
                std::slice::from_raw_parts(p_memory_ranges, memory_range_count as usize)
10968
0
            });
10969
0
        match layer_result {
10970
0
            LayerResult::Handled(res) => match res {
10971
0
                Ok(()) => vk::Result::SUCCESS,
10972
0
                Err(e) => e,
10973
            },
10974
            LayerResult::Unhandled => unsafe {
10975
0
                (dispatch_table.invalidate_mapped_memory_ranges)(
10976
0
                    device,
10977
0
                    memory_range_count,
10978
0
                    p_memory_ranges,
10979
0
                )
10980
            },
10981
        }
10982
0
    }
10983
0
    extern "system" fn get_device_memory_commitment(
10984
0
        device: vk::Device,
10985
0
        memory: vk::DeviceMemory,
10986
0
        p_committed_memory_in_bytes: *mut vk::DeviceSize,
10987
0
    ) {
10988
0
        let global = Self::instance();
10989
0
        // vkGetDeviceMemoryCommitment
10990
0
        let device_info = global.get_device_info(device).unwrap();
10991
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10992
0
        let layer_result = device_info
10993
0
            .customized_info
10994
0
            .borrow()
10995
0
            .hooks()
10996
0
            .get_device_memory_commitment(memory);
10997
0
        match layer_result {
10998
0
            LayerResult::Handled(res) => {
10999
0
                *unsafe { p_committed_memory_in_bytes.as_mut() }.unwrap() = res;
11000
0
            }
11001
            LayerResult::Unhandled => unsafe {
11002
0
                (dispatch_table.get_device_memory_commitment)(
11003
0
                    device,
11004
0
                    memory,
11005
0
                    p_committed_memory_in_bytes,
11006
0
                )
11007
            },
11008
        }
11009
0
    }
11010
0
    extern "system" fn bind_buffer_memory(
11011
0
        device: vk::Device,
11012
0
        buffer: vk::Buffer,
11013
0
        memory: vk::DeviceMemory,
11014
0
        memory_offset: vk::DeviceSize,
11015
0
    ) -> vk::Result {
11016
0
        let global = Self::instance();
11017
0
        // vkBindBufferMemory
11018
0
        let device_info = global.get_device_info(device).unwrap();
11019
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11020
0
        let layer_result = device_info
11021
0
            .customized_info
11022
0
            .borrow()
11023
0
            .hooks()
11024
0
            .bind_buffer_memory(buffer, memory, memory_offset);
11025
0
        match layer_result {
11026
0
            LayerResult::Handled(res) => match res {
11027
0
                Ok(()) => vk::Result::SUCCESS,
11028
0
                Err(e) => e,
11029
            },
11030
            LayerResult::Unhandled => unsafe {
11031
0
                (dispatch_table.bind_buffer_memory)(device, buffer, memory, memory_offset)
11032
            },
11033
        }
11034
0
    }
11035
0
    extern "system" fn bind_image_memory(
11036
0
        device: vk::Device,
11037
0
        image: vk::Image,
11038
0
        memory: vk::DeviceMemory,
11039
0
        memory_offset: vk::DeviceSize,
11040
0
    ) -> vk::Result {
11041
0
        let global = Self::instance();
11042
0
        // vkBindImageMemory
11043
0
        let device_info = global.get_device_info(device).unwrap();
11044
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11045
0
        let layer_result = device_info
11046
0
            .customized_info
11047
0
            .borrow()
11048
0
            .hooks()
11049
0
            .bind_image_memory(image, memory, memory_offset);
11050
0
        match layer_result {
11051
0
            LayerResult::Handled(res) => match res {
11052
0
                Ok(()) => vk::Result::SUCCESS,
11053
0
                Err(e) => e,
11054
            },
11055
            LayerResult::Unhandled => unsafe {
11056
0
                (dispatch_table.bind_image_memory)(device, image, memory, memory_offset)
11057
            },
11058
        }
11059
0
    }
11060
0
    extern "system" fn get_buffer_memory_requirements(
11061
0
        device: vk::Device,
11062
0
        buffer: vk::Buffer,
11063
0
        p_memory_requirements: *mut vk::MemoryRequirements,
11064
0
    ) {
11065
0
        let global = Self::instance();
11066
0
        // vkGetBufferMemoryRequirements
11067
0
        let device_info = global.get_device_info(device).unwrap();
11068
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11069
0
        let layer_result = device_info
11070
0
            .customized_info
11071
0
            .borrow()
11072
0
            .hooks()
11073
0
            .get_buffer_memory_requirements(
11074
0
                buffer,
11075
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
11076
0
            );
11077
0
        match layer_result {
11078
0
            LayerResult::Handled(res) => res,
11079
            LayerResult::Unhandled => unsafe {
11080
0
                (dispatch_table.get_buffer_memory_requirements)(
11081
0
                    device,
11082
0
                    buffer,
11083
0
                    p_memory_requirements,
11084
0
                )
11085
            },
11086
        }
11087
0
    }
11088
0
    extern "system" fn get_image_memory_requirements(
11089
0
        device: vk::Device,
11090
0
        image: vk::Image,
11091
0
        p_memory_requirements: *mut vk::MemoryRequirements,
11092
0
    ) {
11093
0
        let global = Self::instance();
11094
0
        // vkGetImageMemoryRequirements
11095
0
        let device_info = global.get_device_info(device).unwrap();
11096
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11097
0
        let layer_result = device_info
11098
0
            .customized_info
11099
0
            .borrow()
11100
0
            .hooks()
11101
0
            .get_image_memory_requirements(
11102
0
                image,
11103
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
11104
0
            );
11105
0
        match layer_result {
11106
0
            LayerResult::Handled(res) => res,
11107
            LayerResult::Unhandled => unsafe {
11108
0
                (dispatch_table.get_image_memory_requirements)(device, image, p_memory_requirements)
11109
            },
11110
        }
11111
0
    }
11112
0
    extern "system" fn get_image_sparse_memory_requirements(
11113
0
        device: vk::Device,
11114
0
        image: vk::Image,
11115
0
        p_sparse_memory_requirement_count: *mut u32,
11116
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements,
11117
0
    ) {
11118
0
        let global = Self::instance();
11119
0
        // vkGetImageSparseMemoryRequirements
11120
0
        let device_info = global.get_device_info(device).unwrap();
11121
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11122
        #[allow(clippy::unnecessary_cast)]
11123
0
        let layer_result = device_info
11124
0
            .customized_info
11125
0
            .borrow()
11126
0
            .hooks()
11127
0
            .get_image_sparse_memory_requirements(
11128
0
                image,
11129
0
                if p_sparse_memory_requirements.is_null() {
11130
0
                    None
11131
                } else {
11132
0
                    Some(unsafe {
11133
0
                        std::slice::from_raw_parts_mut(
11134
0
                            p_sparse_memory_requirements,
11135
0
                            *unsafe { p_sparse_memory_requirement_count.as_ref() }.unwrap()
11136
0
                                as usize,
11137
0
                        )
11138
0
                    })
11139
                },
11140
            );
11141
0
        match layer_result {
11142
0
            LayerResult::Handled(res) => res,
11143
            LayerResult::Unhandled => unsafe {
11144
0
                (dispatch_table.get_image_sparse_memory_requirements)(
11145
0
                    device,
11146
0
                    image,
11147
0
                    p_sparse_memory_requirement_count,
11148
0
                    p_sparse_memory_requirements,
11149
0
                )
11150
            },
11151
        }
11152
0
    }
11153
0
    extern "system" fn queue_bind_sparse(
11154
0
        queue: vk::Queue,
11155
0
        bind_info_count: u32,
11156
0
        p_bind_info: *const vk::BindSparseInfo,
11157
0
        fence: vk::Fence,
11158
0
    ) -> vk::Result {
11159
0
        let global = Self::instance();
11160
0
        // vkQueueBindSparse
11161
0
        let device_info = global.get_device_info(queue).unwrap();
11162
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11163
0
        #[allow(clippy::unnecessary_cast)]
11164
0
        let layer_result = device_info
11165
0
            .customized_info
11166
0
            .borrow()
11167
0
            .hooks()
11168
0
            .queue_bind_sparse(
11169
0
                queue,
11170
0
                unsafe { std::slice::from_raw_parts(p_bind_info, bind_info_count as usize) },
11171
0
                fence,
11172
0
            );
11173
0
        match layer_result {
11174
0
            LayerResult::Handled(res) => match res {
11175
0
                Ok(()) => vk::Result::SUCCESS,
11176
0
                Err(e) => e,
11177
            },
11178
            LayerResult::Unhandled => unsafe {
11179
0
                (dispatch_table.queue_bind_sparse)(queue, bind_info_count, p_bind_info, fence)
11180
            },
11181
        }
11182
0
    }
11183
0
    extern "system" fn create_fence(
11184
0
        device: vk::Device,
11185
0
        p_create_info: *const vk::FenceCreateInfo,
11186
0
        p_allocator: *const vk::AllocationCallbacks,
11187
0
        p_fence: *mut vk::Fence,
11188
0
    ) -> vk::Result {
11189
0
        let global = Self::instance();
11190
0
        // vkCreateFence
11191
0
        let device_info = global.get_device_info(device).unwrap();
11192
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11193
0
        let layer_result = device_info
11194
0
            .customized_info
11195
0
            .borrow()
11196
0
            .hooks()
11197
0
            .create_fence(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11198
0
                p_allocator.as_ref()
11199
0
            });
11200
0
        match layer_result {
11201
0
            LayerResult::Handled(res) => match res {
11202
0
                Ok(res) => {
11203
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
11204
0
                    vk::Result::SUCCESS
11205
                }
11206
0
                Err(e) => e,
11207
            },
11208
            LayerResult::Unhandled => unsafe {
11209
0
                (dispatch_table.create_fence)(device, p_create_info, p_allocator, p_fence)
11210
            },
11211
        }
11212
0
    }
11213
0
    extern "system" fn destroy_fence(
11214
0
        device: vk::Device,
11215
0
        fence: vk::Fence,
11216
0
        p_allocator: *const vk::AllocationCallbacks,
11217
0
    ) {
11218
0
        let global = Self::instance();
11219
0
        // vkDestroyFence
11220
0
        let device_info = global.get_device_info(device).unwrap();
11221
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11222
0
        let layer_result = device_info
11223
0
            .customized_info
11224
0
            .borrow()
11225
0
            .hooks()
11226
0
            .destroy_fence(fence, unsafe { p_allocator.as_ref() });
11227
0
        match layer_result {
11228
0
            LayerResult::Handled(res) => res,
11229
            LayerResult::Unhandled => unsafe {
11230
0
                (dispatch_table.destroy_fence)(device, fence, p_allocator)
11231
            },
11232
        }
11233
0
    }
11234
0
    extern "system" fn reset_fences(
11235
0
        device: vk::Device,
11236
0
        fence_count: u32,
11237
0
        p_fences: *const vk::Fence,
11238
0
    ) -> vk::Result {
11239
0
        let global = Self::instance();
11240
0
        // vkResetFences
11241
0
        let device_info = global.get_device_info(device).unwrap();
11242
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11243
0
        #[allow(clippy::unnecessary_cast)]
11244
0
        let layer_result = device_info
11245
0
            .customized_info
11246
0
            .borrow()
11247
0
            .hooks()
11248
0
            .reset_fences(unsafe { std::slice::from_raw_parts(p_fences, fence_count as usize) });
11249
0
        match layer_result {
11250
0
            LayerResult::Handled(res) => match res {
11251
0
                Ok(()) => vk::Result::SUCCESS,
11252
0
                Err(e) => e,
11253
            },
11254
            LayerResult::Unhandled => unsafe {
11255
0
                (dispatch_table.reset_fences)(device, fence_count, p_fences)
11256
            },
11257
        }
11258
0
    }
11259
0
    extern "system" fn get_fence_status(device: vk::Device, fence: vk::Fence) -> vk::Result {
11260
0
        let global = Self::instance();
11261
0
        // vkGetFenceStatus
11262
0
        let device_info = global.get_device_info(device).unwrap();
11263
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11264
0
        let layer_result = device_info
11265
0
            .customized_info
11266
0
            .borrow()
11267
0
            .hooks()
11268
0
            .get_fence_status(fence);
11269
0
        match layer_result {
11270
0
            LayerResult::Handled(res) => match res {
11271
0
                Ok(()) => vk::Result::SUCCESS,
11272
0
                Err(e) => e,
11273
            },
11274
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_fence_status)(device, fence) },
11275
        }
11276
0
    }
11277
0
    extern "system" fn wait_for_fences(
11278
0
        device: vk::Device,
11279
0
        fence_count: u32,
11280
0
        p_fences: *const vk::Fence,
11281
0
        wait_all: vk::Bool32,
11282
0
        timeout: u64,
11283
0
    ) -> vk::Result {
11284
0
        let global = Self::instance();
11285
0
        // vkWaitForFences
11286
0
        let device_info = global.get_device_info(device).unwrap();
11287
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11288
0
        #[allow(clippy::unnecessary_cast)]
11289
0
        let layer_result = device_info
11290
0
            .customized_info
11291
0
            .borrow()
11292
0
            .hooks()
11293
0
            .wait_for_fences(
11294
0
                unsafe { std::slice::from_raw_parts(p_fences, fence_count as usize) },
11295
0
                wait_all == vk::TRUE,
11296
0
                timeout,
11297
0
            );
11298
0
        match layer_result {
11299
0
            LayerResult::Handled(res) => match res {
11300
0
                Ok(()) => vk::Result::SUCCESS,
11301
0
                Err(e) => e,
11302
            },
11303
            LayerResult::Unhandled => unsafe {
11304
0
                (dispatch_table.wait_for_fences)(device, fence_count, p_fences, wait_all, timeout)
11305
            },
11306
        }
11307
0
    }
11308
0
    extern "system" fn create_semaphore(
11309
0
        device: vk::Device,
11310
0
        p_create_info: *const vk::SemaphoreCreateInfo,
11311
0
        p_allocator: *const vk::AllocationCallbacks,
11312
0
        p_semaphore: *mut vk::Semaphore,
11313
0
    ) -> vk::Result {
11314
0
        let global = Self::instance();
11315
0
        // vkCreateSemaphore
11316
0
        let device_info = global.get_device_info(device).unwrap();
11317
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11318
0
        let layer_result = device_info
11319
0
            .customized_info
11320
0
            .borrow()
11321
0
            .hooks()
11322
0
            .create_semaphore(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11323
0
                p_allocator.as_ref()
11324
0
            });
11325
0
        match layer_result {
11326
0
            LayerResult::Handled(res) => match res {
11327
0
                Ok(res) => {
11328
0
                    *unsafe { p_semaphore.as_mut() }.unwrap() = res;
11329
0
                    vk::Result::SUCCESS
11330
                }
11331
0
                Err(e) => e,
11332
            },
11333
            LayerResult::Unhandled => unsafe {
11334
0
                (dispatch_table.create_semaphore)(device, p_create_info, p_allocator, p_semaphore)
11335
            },
11336
        }
11337
0
    }
11338
0
    extern "system" fn destroy_semaphore(
11339
0
        device: vk::Device,
11340
0
        semaphore: vk::Semaphore,
11341
0
        p_allocator: *const vk::AllocationCallbacks,
11342
0
    ) {
11343
0
        let global = Self::instance();
11344
0
        // vkDestroySemaphore
11345
0
        let device_info = global.get_device_info(device).unwrap();
11346
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11347
0
        let layer_result = device_info
11348
0
            .customized_info
11349
0
            .borrow()
11350
0
            .hooks()
11351
0
            .destroy_semaphore(semaphore, unsafe { p_allocator.as_ref() });
11352
0
        match layer_result {
11353
0
            LayerResult::Handled(res) => res,
11354
            LayerResult::Unhandled => unsafe {
11355
0
                (dispatch_table.destroy_semaphore)(device, semaphore, p_allocator)
11356
            },
11357
        }
11358
0
    }
11359
0
    extern "system" fn create_event(
11360
0
        device: vk::Device,
11361
0
        p_create_info: *const vk::EventCreateInfo,
11362
0
        p_allocator: *const vk::AllocationCallbacks,
11363
0
        p_event: *mut vk::Event,
11364
0
    ) -> vk::Result {
11365
0
        let global = Self::instance();
11366
0
        // vkCreateEvent
11367
0
        let device_info = global.get_device_info(device).unwrap();
11368
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11369
0
        let layer_result = device_info
11370
0
            .customized_info
11371
0
            .borrow()
11372
0
            .hooks()
11373
0
            .create_event(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11374
0
                p_allocator.as_ref()
11375
0
            });
11376
0
        match layer_result {
11377
0
            LayerResult::Handled(res) => match res {
11378
0
                Ok(res) => {
11379
0
                    *unsafe { p_event.as_mut() }.unwrap() = res;
11380
0
                    vk::Result::SUCCESS
11381
                }
11382
0
                Err(e) => e,
11383
            },
11384
            LayerResult::Unhandled => unsafe {
11385
0
                (dispatch_table.create_event)(device, p_create_info, p_allocator, p_event)
11386
            },
11387
        }
11388
0
    }
11389
0
    extern "system" fn destroy_event(
11390
0
        device: vk::Device,
11391
0
        event: vk::Event,
11392
0
        p_allocator: *const vk::AllocationCallbacks,
11393
0
    ) {
11394
0
        let global = Self::instance();
11395
0
        // vkDestroyEvent
11396
0
        let device_info = global.get_device_info(device).unwrap();
11397
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11398
0
        let layer_result = device_info
11399
0
            .customized_info
11400
0
            .borrow()
11401
0
            .hooks()
11402
0
            .destroy_event(event, unsafe { p_allocator.as_ref() });
11403
0
        match layer_result {
11404
0
            LayerResult::Handled(res) => res,
11405
            LayerResult::Unhandled => unsafe {
11406
0
                (dispatch_table.destroy_event)(device, event, p_allocator)
11407
            },
11408
        }
11409
0
    }
11410
0
    extern "system" fn get_event_status(device: vk::Device, event: vk::Event) -> vk::Result {
11411
0
        let global = Self::instance();
11412
0
        // vkGetEventStatus
11413
0
        let device_info = global.get_device_info(device).unwrap();
11414
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11415
0
        let layer_result = device_info
11416
0
            .customized_info
11417
0
            .borrow()
11418
0
            .hooks()
11419
0
            .get_event_status(event);
11420
0
        match layer_result {
11421
0
            LayerResult::Handled(res) => match res {
11422
0
                Ok(()) => vk::Result::SUCCESS,
11423
0
                Err(e) => e,
11424
            },
11425
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_event_status)(device, event) },
11426
        }
11427
0
    }
11428
0
    extern "system" fn set_event(device: vk::Device, event: vk::Event) -> vk::Result {
11429
0
        let global = Self::instance();
11430
0
        // vkSetEvent
11431
0
        let device_info = global.get_device_info(device).unwrap();
11432
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11433
0
        let layer_result = device_info
11434
0
            .customized_info
11435
0
            .borrow()
11436
0
            .hooks()
11437
0
            .set_event(event);
11438
0
        match layer_result {
11439
0
            LayerResult::Handled(res) => match res {
11440
0
                Ok(()) => vk::Result::SUCCESS,
11441
0
                Err(e) => e,
11442
            },
11443
0
            LayerResult::Unhandled => unsafe { (dispatch_table.set_event)(device, event) },
11444
        }
11445
0
    }
11446
0
    extern "system" fn reset_event(device: vk::Device, event: vk::Event) -> vk::Result {
11447
0
        let global = Self::instance();
11448
0
        // vkResetEvent
11449
0
        let device_info = global.get_device_info(device).unwrap();
11450
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11451
0
        let layer_result = device_info
11452
0
            .customized_info
11453
0
            .borrow()
11454
0
            .hooks()
11455
0
            .reset_event(event);
11456
0
        match layer_result {
11457
0
            LayerResult::Handled(res) => match res {
11458
0
                Ok(()) => vk::Result::SUCCESS,
11459
0
                Err(e) => e,
11460
            },
11461
0
            LayerResult::Unhandled => unsafe { (dispatch_table.reset_event)(device, event) },
11462
        }
11463
0
    }
11464
0
    extern "system" fn create_query_pool(
11465
0
        device: vk::Device,
11466
0
        p_create_info: *const vk::QueryPoolCreateInfo,
11467
0
        p_allocator: *const vk::AllocationCallbacks,
11468
0
        p_query_pool: *mut vk::QueryPool,
11469
0
    ) -> vk::Result {
11470
0
        let global = Self::instance();
11471
0
        // vkCreateQueryPool
11472
0
        let device_info = global.get_device_info(device).unwrap();
11473
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11474
0
        let layer_result = device_info
11475
0
            .customized_info
11476
0
            .borrow()
11477
0
            .hooks()
11478
0
            .create_query_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11479
0
                p_allocator.as_ref()
11480
0
            });
11481
0
        match layer_result {
11482
0
            LayerResult::Handled(res) => match res {
11483
0
                Ok(res) => {
11484
0
                    *unsafe { p_query_pool.as_mut() }.unwrap() = res;
11485
0
                    vk::Result::SUCCESS
11486
                }
11487
0
                Err(e) => e,
11488
            },
11489
            LayerResult::Unhandled => unsafe {
11490
0
                (dispatch_table.create_query_pool)(device, p_create_info, p_allocator, p_query_pool)
11491
            },
11492
        }
11493
0
    }
11494
0
    extern "system" fn destroy_query_pool(
11495
0
        device: vk::Device,
11496
0
        query_pool: vk::QueryPool,
11497
0
        p_allocator: *const vk::AllocationCallbacks,
11498
0
    ) {
11499
0
        let global = Self::instance();
11500
0
        // vkDestroyQueryPool
11501
0
        let device_info = global.get_device_info(device).unwrap();
11502
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11503
0
        let layer_result = device_info
11504
0
            .customized_info
11505
0
            .borrow()
11506
0
            .hooks()
11507
0
            .destroy_query_pool(query_pool, unsafe { p_allocator.as_ref() });
11508
0
        match layer_result {
11509
0
            LayerResult::Handled(res) => res,
11510
            LayerResult::Unhandled => unsafe {
11511
0
                (dispatch_table.destroy_query_pool)(device, query_pool, p_allocator)
11512
            },
11513
        }
11514
0
    }
11515
0
    extern "system" fn get_query_pool_results(
11516
0
        device: vk::Device,
11517
0
        query_pool: vk::QueryPool,
11518
0
        first_query: u32,
11519
0
        query_count: u32,
11520
0
        data_size: usize,
11521
0
        p_data: *mut c_void,
11522
0
        stride: vk::DeviceSize,
11523
0
        flags: vk::QueryResultFlags,
11524
0
    ) -> vk::Result {
11525
0
        let global = Self::instance();
11526
0
        // vkGetQueryPoolResults
11527
0
        let device_info = global.get_device_info(device).unwrap();
11528
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11529
0
        #[allow(clippy::unnecessary_cast)]
11530
0
        let layer_result = device_info
11531
0
            .customized_info
11532
0
            .borrow()
11533
0
            .hooks()
11534
0
            .get_query_pool_results(
11535
0
                query_pool,
11536
0
                first_query,
11537
0
                query_count,
11538
0
                unsafe { std::slice::from_raw_parts_mut(p_data as *mut u8, data_size as usize) },
11539
0
                stride,
11540
0
                flags,
11541
0
            );
11542
0
        match layer_result {
11543
0
            LayerResult::Handled(res) => match res {
11544
0
                Ok(()) => vk::Result::SUCCESS,
11545
0
                Err(e) => e,
11546
            },
11547
            LayerResult::Unhandled => unsafe {
11548
0
                (dispatch_table.get_query_pool_results)(
11549
0
                    device,
11550
0
                    query_pool,
11551
0
                    first_query,
11552
0
                    query_count,
11553
0
                    data_size,
11554
0
                    p_data,
11555
0
                    stride,
11556
0
                    flags,
11557
0
                )
11558
            },
11559
        }
11560
0
    }
11561
0
    extern "system" fn create_buffer(
11562
0
        device: vk::Device,
11563
0
        p_create_info: *const vk::BufferCreateInfo,
11564
0
        p_allocator: *const vk::AllocationCallbacks,
11565
0
        p_buffer: *mut vk::Buffer,
11566
0
    ) -> vk::Result {
11567
0
        let global = Self::instance();
11568
0
        // vkCreateBuffer
11569
0
        let device_info = global.get_device_info(device).unwrap();
11570
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11571
0
        let layer_result = device_info
11572
0
            .customized_info
11573
0
            .borrow()
11574
0
            .hooks()
11575
0
            .create_buffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11576
0
                p_allocator.as_ref()
11577
0
            });
11578
0
        match layer_result {
11579
0
            LayerResult::Handled(res) => match res {
11580
0
                Ok(res) => {
11581
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
11582
0
                    vk::Result::SUCCESS
11583
                }
11584
0
                Err(e) => e,
11585
            },
11586
            LayerResult::Unhandled => unsafe {
11587
0
                (dispatch_table.create_buffer)(device, p_create_info, p_allocator, p_buffer)
11588
            },
11589
        }
11590
0
    }
11591
0
    extern "system" fn destroy_buffer(
11592
0
        device: vk::Device,
11593
0
        buffer: vk::Buffer,
11594
0
        p_allocator: *const vk::AllocationCallbacks,
11595
0
    ) {
11596
0
        let global = Self::instance();
11597
0
        // vkDestroyBuffer
11598
0
        let device_info = global.get_device_info(device).unwrap();
11599
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11600
0
        let layer_result = device_info
11601
0
            .customized_info
11602
0
            .borrow()
11603
0
            .hooks()
11604
0
            .destroy_buffer(buffer, unsafe { p_allocator.as_ref() });
11605
0
        match layer_result {
11606
0
            LayerResult::Handled(res) => res,
11607
            LayerResult::Unhandled => unsafe {
11608
0
                (dispatch_table.destroy_buffer)(device, buffer, p_allocator)
11609
            },
11610
        }
11611
0
    }
11612
0
    extern "system" fn create_buffer_view(
11613
0
        device: vk::Device,
11614
0
        p_create_info: *const vk::BufferViewCreateInfo,
11615
0
        p_allocator: *const vk::AllocationCallbacks,
11616
0
        p_view: *mut vk::BufferView,
11617
0
    ) -> vk::Result {
11618
0
        let global = Self::instance();
11619
0
        // vkCreateBufferView
11620
0
        let device_info = global.get_device_info(device).unwrap();
11621
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11622
0
        let layer_result = device_info
11623
0
            .customized_info
11624
0
            .borrow()
11625
0
            .hooks()
11626
0
            .create_buffer_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11627
0
                p_allocator.as_ref()
11628
0
            });
11629
0
        match layer_result {
11630
0
            LayerResult::Handled(res) => match res {
11631
0
                Ok(res) => {
11632
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11633
0
                    vk::Result::SUCCESS
11634
                }
11635
0
                Err(e) => e,
11636
            },
11637
            LayerResult::Unhandled => unsafe {
11638
0
                (dispatch_table.create_buffer_view)(device, p_create_info, p_allocator, p_view)
11639
            },
11640
        }
11641
0
    }
11642
0
    extern "system" fn destroy_buffer_view(
11643
0
        device: vk::Device,
11644
0
        buffer_view: vk::BufferView,
11645
0
        p_allocator: *const vk::AllocationCallbacks,
11646
0
    ) {
11647
0
        let global = Self::instance();
11648
0
        // vkDestroyBufferView
11649
0
        let device_info = global.get_device_info(device).unwrap();
11650
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11651
0
        let layer_result = device_info
11652
0
            .customized_info
11653
0
            .borrow()
11654
0
            .hooks()
11655
0
            .destroy_buffer_view(buffer_view, unsafe { p_allocator.as_ref() });
11656
0
        match layer_result {
11657
0
            LayerResult::Handled(res) => res,
11658
            LayerResult::Unhandled => unsafe {
11659
0
                (dispatch_table.destroy_buffer_view)(device, buffer_view, p_allocator)
11660
            },
11661
        }
11662
0
    }
11663
0
    extern "system" fn create_image(
11664
0
        device: vk::Device,
11665
0
        p_create_info: *const vk::ImageCreateInfo,
11666
0
        p_allocator: *const vk::AllocationCallbacks,
11667
0
        p_image: *mut vk::Image,
11668
0
    ) -> vk::Result {
11669
0
        let global = Self::instance();
11670
0
        // vkCreateImage
11671
0
        let device_info = global.get_device_info(device).unwrap();
11672
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11673
0
        let layer_result = device_info
11674
0
            .customized_info
11675
0
            .borrow()
11676
0
            .hooks()
11677
0
            .create_image(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11678
0
                p_allocator.as_ref()
11679
0
            });
11680
0
        match layer_result {
11681
0
            LayerResult::Handled(res) => match res {
11682
0
                Ok(res) => {
11683
0
                    *unsafe { p_image.as_mut() }.unwrap() = res;
11684
0
                    vk::Result::SUCCESS
11685
                }
11686
0
                Err(e) => e,
11687
            },
11688
            LayerResult::Unhandled => unsafe {
11689
0
                (dispatch_table.create_image)(device, p_create_info, p_allocator, p_image)
11690
            },
11691
        }
11692
0
    }
11693
1
    extern "system" fn destroy_image(
11694
1
        device: vk::Device,
11695
1
        image: vk::Image,
11696
1
        p_allocator: *const vk::AllocationCallbacks,
11697
1
    ) {
11698
1
        let global = Self::instance();
11699
1
        // vkDestroyImage
11700
1
        let device_info = global.get_device_info(device).unwrap();
11701
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11702
1
        let layer_result = device_info
11703
1
            .customized_info
11704
1
            .borrow()
11705
1
            .hooks()
11706
1
            .destroy_image(image, unsafe { p_allocator.as_ref() });
11707
1
        match layer_result {
11708
0
            LayerResult::Handled(res) => res,
11709
            LayerResult::Unhandled => unsafe {
11710
1
                (dispatch_table.destroy_image)(device, image, p_allocator)
11711
            },
11712
        }
11713
1
    }
11714
0
    extern "system" fn get_image_subresource_layout(
11715
0
        device: vk::Device,
11716
0
        image: vk::Image,
11717
0
        p_subresource: *const vk::ImageSubresource,
11718
0
        p_layout: *mut vk::SubresourceLayout,
11719
0
    ) {
11720
0
        let global = Self::instance();
11721
0
        // vkGetImageSubresourceLayout
11722
0
        let device_info = global.get_device_info(device).unwrap();
11723
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11724
0
        let layer_result = device_info
11725
0
            .customized_info
11726
0
            .borrow()
11727
0
            .hooks()
11728
0
            .get_image_subresource_layout(
11729
0
                image,
11730
0
                unsafe { p_subresource.as_ref() }.unwrap(),
11731
0
                unsafe { p_layout.as_mut() }.unwrap(),
11732
0
            );
11733
0
        match layer_result {
11734
0
            LayerResult::Handled(res) => res,
11735
            LayerResult::Unhandled => unsafe {
11736
0
                (dispatch_table.get_image_subresource_layout)(
11737
0
                    device,
11738
0
                    image,
11739
0
                    p_subresource,
11740
0
                    p_layout,
11741
0
                )
11742
            },
11743
        }
11744
0
    }
11745
0
    extern "system" fn create_image_view(
11746
0
        device: vk::Device,
11747
0
        p_create_info: *const vk::ImageViewCreateInfo,
11748
0
        p_allocator: *const vk::AllocationCallbacks,
11749
0
        p_view: *mut vk::ImageView,
11750
0
    ) -> vk::Result {
11751
0
        let global = Self::instance();
11752
0
        // vkCreateImageView
11753
0
        let device_info = global.get_device_info(device).unwrap();
11754
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11755
0
        let layer_result = device_info
11756
0
            .customized_info
11757
0
            .borrow()
11758
0
            .hooks()
11759
0
            .create_image_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11760
0
                p_allocator.as_ref()
11761
0
            });
11762
0
        match layer_result {
11763
0
            LayerResult::Handled(res) => match res {
11764
0
                Ok(res) => {
11765
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11766
0
                    vk::Result::SUCCESS
11767
                }
11768
0
                Err(e) => e,
11769
            },
11770
            LayerResult::Unhandled => unsafe {
11771
0
                (dispatch_table.create_image_view)(device, p_create_info, p_allocator, p_view)
11772
            },
11773
        }
11774
0
    }
11775
0
    extern "system" fn destroy_image_view(
11776
0
        device: vk::Device,
11777
0
        image_view: vk::ImageView,
11778
0
        p_allocator: *const vk::AllocationCallbacks,
11779
0
    ) {
11780
0
        let global = Self::instance();
11781
0
        // vkDestroyImageView
11782
0
        let device_info = global.get_device_info(device).unwrap();
11783
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11784
0
        let layer_result = device_info
11785
0
            .customized_info
11786
0
            .borrow()
11787
0
            .hooks()
11788
0
            .destroy_image_view(image_view, unsafe { p_allocator.as_ref() });
11789
0
        match layer_result {
11790
0
            LayerResult::Handled(res) => res,
11791
            LayerResult::Unhandled => unsafe {
11792
0
                (dispatch_table.destroy_image_view)(device, image_view, p_allocator)
11793
            },
11794
        }
11795
0
    }
11796
0
    extern "system" fn create_shader_module(
11797
0
        device: vk::Device,
11798
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
11799
0
        p_allocator: *const vk::AllocationCallbacks,
11800
0
        p_shader_module: *mut vk::ShaderModule,
11801
0
    ) -> vk::Result {
11802
0
        let global = Self::instance();
11803
0
        // vkCreateShaderModule
11804
0
        let device_info = global.get_device_info(device).unwrap();
11805
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11806
0
        let layer_result = device_info
11807
0
            .customized_info
11808
0
            .borrow()
11809
0
            .hooks()
11810
0
            .create_shader_module(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11811
0
                p_allocator.as_ref()
11812
0
            });
11813
0
        match layer_result {
11814
0
            LayerResult::Handled(res) => match res {
11815
0
                Ok(res) => {
11816
0
                    *unsafe { p_shader_module.as_mut() }.unwrap() = res;
11817
0
                    vk::Result::SUCCESS
11818
                }
11819
0
                Err(e) => e,
11820
            },
11821
            LayerResult::Unhandled => unsafe {
11822
0
                (dispatch_table.create_shader_module)(
11823
0
                    device,
11824
0
                    p_create_info,
11825
0
                    p_allocator,
11826
0
                    p_shader_module,
11827
0
                )
11828
            },
11829
        }
11830
0
    }
11831
0
    extern "system" fn destroy_shader_module(
11832
0
        device: vk::Device,
11833
0
        shader_module: vk::ShaderModule,
11834
0
        p_allocator: *const vk::AllocationCallbacks,
11835
0
    ) {
11836
0
        let global = Self::instance();
11837
0
        // vkDestroyShaderModule
11838
0
        let device_info = global.get_device_info(device).unwrap();
11839
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11840
0
        let layer_result = device_info
11841
0
            .customized_info
11842
0
            .borrow()
11843
0
            .hooks()
11844
0
            .destroy_shader_module(shader_module, unsafe { p_allocator.as_ref() });
11845
0
        match layer_result {
11846
0
            LayerResult::Handled(res) => res,
11847
            LayerResult::Unhandled => unsafe {
11848
0
                (dispatch_table.destroy_shader_module)(device, shader_module, p_allocator)
11849
            },
11850
        }
11851
0
    }
11852
0
    extern "system" fn create_pipeline_cache(
11853
0
        device: vk::Device,
11854
0
        p_create_info: *const vk::PipelineCacheCreateInfo,
11855
0
        p_allocator: *const vk::AllocationCallbacks,
11856
0
        p_pipeline_cache: *mut vk::PipelineCache,
11857
0
    ) -> vk::Result {
11858
0
        let global = Self::instance();
11859
0
        // vkCreatePipelineCache
11860
0
        let device_info = global.get_device_info(device).unwrap();
11861
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11862
0
        let layer_result = device_info
11863
0
            .customized_info
11864
0
            .borrow()
11865
0
            .hooks()
11866
0
            .create_pipeline_cache(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11867
0
                p_allocator.as_ref()
11868
0
            });
11869
0
        match layer_result {
11870
0
            LayerResult::Handled(res) => match res {
11871
0
                Ok(res) => {
11872
0
                    *unsafe { p_pipeline_cache.as_mut() }.unwrap() = res;
11873
0
                    vk::Result::SUCCESS
11874
                }
11875
0
                Err(e) => e,
11876
            },
11877
            LayerResult::Unhandled => unsafe {
11878
0
                (dispatch_table.create_pipeline_cache)(
11879
0
                    device,
11880
0
                    p_create_info,
11881
0
                    p_allocator,
11882
0
                    p_pipeline_cache,
11883
0
                )
11884
            },
11885
        }
11886
0
    }
11887
0
    extern "system" fn destroy_pipeline_cache(
11888
0
        device: vk::Device,
11889
0
        pipeline_cache: vk::PipelineCache,
11890
0
        p_allocator: *const vk::AllocationCallbacks,
11891
0
    ) {
11892
0
        let global = Self::instance();
11893
0
        // vkDestroyPipelineCache
11894
0
        let device_info = global.get_device_info(device).unwrap();
11895
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11896
0
        let layer_result = device_info
11897
0
            .customized_info
11898
0
            .borrow()
11899
0
            .hooks()
11900
0
            .destroy_pipeline_cache(pipeline_cache, unsafe { p_allocator.as_ref() });
11901
0
        match layer_result {
11902
0
            LayerResult::Handled(res) => res,
11903
            LayerResult::Unhandled => unsafe {
11904
0
                (dispatch_table.destroy_pipeline_cache)(device, pipeline_cache, p_allocator)
11905
            },
11906
        }
11907
0
    }
11908
0
    extern "system" fn get_pipeline_cache_data(
11909
0
        device: vk::Device,
11910
0
        pipeline_cache: vk::PipelineCache,
11911
0
        p_data_size: *mut usize,
11912
0
        p_data: *mut c_void,
11913
0
    ) -> vk::Result {
11914
0
        let global = Self::instance();
11915
0
        // vkGetPipelineCacheData
11916
0
        let device_info = global.get_device_info(device).unwrap();
11917
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11918
0
        let layer_result = device_info
11919
0
            .customized_info
11920
0
            .borrow()
11921
0
            .hooks()
11922
0
            .get_pipeline_cache_data(pipeline_cache);
11923
0
        match layer_result {
11924
0
            LayerResult::Handled(res) => match res {
11925
0
                Ok(res) => {
11926
0
                    let p_data = p_data as *mut u8;
11927
0
                    unsafe { fill_vk_out_array(&res, NonNull::new(p_data_size).unwrap(), p_data) }
11928
                }
11929
0
                Err(e) => e,
11930
            },
11931
            LayerResult::Unhandled => unsafe {
11932
0
                (dispatch_table.get_pipeline_cache_data)(
11933
0
                    device,
11934
0
                    pipeline_cache,
11935
0
                    p_data_size,
11936
0
                    p_data,
11937
0
                )
11938
            },
11939
        }
11940
0
    }
11941
0
    extern "system" fn merge_pipeline_caches(
11942
0
        device: vk::Device,
11943
0
        dst_cache: vk::PipelineCache,
11944
0
        src_cache_count: u32,
11945
0
        p_src_caches: *const vk::PipelineCache,
11946
0
    ) -> vk::Result {
11947
0
        let global = Self::instance();
11948
0
        // vkMergePipelineCaches
11949
0
        let device_info = global.get_device_info(device).unwrap();
11950
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11951
0
        #[allow(clippy::unnecessary_cast)]
11952
0
        let layer_result = device_info
11953
0
            .customized_info
11954
0
            .borrow()
11955
0
            .hooks()
11956
0
            .merge_pipeline_caches(dst_cache, unsafe {
11957
0
                std::slice::from_raw_parts(p_src_caches, src_cache_count as usize)
11958
0
            });
11959
0
        match layer_result {
11960
0
            LayerResult::Handled(res) => match res {
11961
0
                Ok(()) => vk::Result::SUCCESS,
11962
0
                Err(e) => e,
11963
            },
11964
            LayerResult::Unhandled => unsafe {
11965
0
                (dispatch_table.merge_pipeline_caches)(
11966
0
                    device,
11967
0
                    dst_cache,
11968
0
                    src_cache_count,
11969
0
                    p_src_caches,
11970
0
                )
11971
            },
11972
        }
11973
0
    }
11974
0
    extern "system" fn create_graphics_pipelines(
11975
0
        device: vk::Device,
11976
0
        pipeline_cache: vk::PipelineCache,
11977
0
        create_info_count: u32,
11978
0
        p_create_infos: *const vk::GraphicsPipelineCreateInfo,
11979
0
        p_allocator: *const vk::AllocationCallbacks,
11980
0
        p_pipelines: *mut vk::Pipeline,
11981
0
    ) -> vk::Result {
11982
0
        let global = Self::instance();
11983
0
        // vkCreateGraphicsPipelines
11984
0
        let device_info = global.get_device_info(device).unwrap();
11985
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11986
0
        #[allow(clippy::unnecessary_cast)]
11987
0
        let layer_result = device_info
11988
0
            .customized_info
11989
0
            .borrow()
11990
0
            .hooks()
11991
0
            .create_graphics_pipelines(
11992
0
                pipeline_cache,
11993
0
                unsafe { std::slice::from_raw_parts(p_create_infos, create_info_count as usize) },
11994
0
                unsafe { p_allocator.as_ref() },
11995
0
            );
11996
0
        match layer_result {
11997
0
            LayerResult::Handled(res) => match res {
11998
0
                Ok(res) => {
11999
0
                    unsafe {
12000
0
                        std::slice::from_raw_parts_mut(
12001
0
                            p_pipelines,
12002
0
                            create_info_count.try_into().unwrap(),
12003
0
                        )
12004
0
                    }
12005
0
                    .copy_from_slice(&res);
12006
0
                    vk::Result::SUCCESS
12007
                }
12008
0
                Err(e) => e,
12009
            },
12010
            LayerResult::Unhandled => unsafe {
12011
0
                (dispatch_table.create_graphics_pipelines)(
12012
0
                    device,
12013
0
                    pipeline_cache,
12014
0
                    create_info_count,
12015
0
                    p_create_infos,
12016
0
                    p_allocator,
12017
0
                    p_pipelines,
12018
0
                )
12019
            },
12020
        }
12021
0
    }
12022
0
    extern "system" fn create_compute_pipelines(
12023
0
        device: vk::Device,
12024
0
        pipeline_cache: vk::PipelineCache,
12025
0
        create_info_count: u32,
12026
0
        p_create_infos: *const vk::ComputePipelineCreateInfo,
12027
0
        p_allocator: *const vk::AllocationCallbacks,
12028
0
        p_pipelines: *mut vk::Pipeline,
12029
0
    ) -> vk::Result {
12030
0
        let global = Self::instance();
12031
0
        // vkCreateComputePipelines
12032
0
        let device_info = global.get_device_info(device).unwrap();
12033
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12034
0
        #[allow(clippy::unnecessary_cast)]
12035
0
        let layer_result = device_info
12036
0
            .customized_info
12037
0
            .borrow()
12038
0
            .hooks()
12039
0
            .create_compute_pipelines(
12040
0
                pipeline_cache,
12041
0
                unsafe { std::slice::from_raw_parts(p_create_infos, create_info_count as usize) },
12042
0
                unsafe { p_allocator.as_ref() },
12043
0
            );
12044
0
        match layer_result {
12045
0
            LayerResult::Handled(res) => match res {
12046
0
                Ok(res) => {
12047
0
                    unsafe {
12048
0
                        std::slice::from_raw_parts_mut(
12049
0
                            p_pipelines,
12050
0
                            create_info_count.try_into().unwrap(),
12051
0
                        )
12052
0
                    }
12053
0
                    .copy_from_slice(&res);
12054
0
                    vk::Result::SUCCESS
12055
                }
12056
0
                Err(e) => e,
12057
            },
12058
            LayerResult::Unhandled => unsafe {
12059
0
                (dispatch_table.create_compute_pipelines)(
12060
0
                    device,
12061
0
                    pipeline_cache,
12062
0
                    create_info_count,
12063
0
                    p_create_infos,
12064
0
                    p_allocator,
12065
0
                    p_pipelines,
12066
0
                )
12067
            },
12068
        }
12069
0
    }
12070
0
    extern "system" fn destroy_pipeline(
12071
0
        device: vk::Device,
12072
0
        pipeline: vk::Pipeline,
12073
0
        p_allocator: *const vk::AllocationCallbacks,
12074
0
    ) {
12075
0
        let global = Self::instance();
12076
0
        // vkDestroyPipeline
12077
0
        let device_info = global.get_device_info(device).unwrap();
12078
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12079
0
        let layer_result = device_info
12080
0
            .customized_info
12081
0
            .borrow()
12082
0
            .hooks()
12083
0
            .destroy_pipeline(pipeline, unsafe { p_allocator.as_ref() });
12084
0
        match layer_result {
12085
0
            LayerResult::Handled(res) => res,
12086
            LayerResult::Unhandled => unsafe {
12087
0
                (dispatch_table.destroy_pipeline)(device, pipeline, p_allocator)
12088
            },
12089
        }
12090
0
    }
12091
0
    extern "system" fn create_pipeline_layout(
12092
0
        device: vk::Device,
12093
0
        p_create_info: *const vk::PipelineLayoutCreateInfo,
12094
0
        p_allocator: *const vk::AllocationCallbacks,
12095
0
        p_pipeline_layout: *mut vk::PipelineLayout,
12096
0
    ) -> vk::Result {
12097
0
        let global = Self::instance();
12098
0
        // vkCreatePipelineLayout
12099
0
        let device_info = global.get_device_info(device).unwrap();
12100
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12101
0
        let layer_result = device_info
12102
0
            .customized_info
12103
0
            .borrow()
12104
0
            .hooks()
12105
0
            .create_pipeline_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12106
0
                p_allocator.as_ref()
12107
0
            });
12108
0
        match layer_result {
12109
0
            LayerResult::Handled(res) => match res {
12110
0
                Ok(res) => {
12111
0
                    *unsafe { p_pipeline_layout.as_mut() }.unwrap() = res;
12112
0
                    vk::Result::SUCCESS
12113
                }
12114
0
                Err(e) => e,
12115
            },
12116
            LayerResult::Unhandled => unsafe {
12117
0
                (dispatch_table.create_pipeline_layout)(
12118
0
                    device,
12119
0
                    p_create_info,
12120
0
                    p_allocator,
12121
0
                    p_pipeline_layout,
12122
0
                )
12123
            },
12124
        }
12125
0
    }
12126
0
    extern "system" fn destroy_pipeline_layout(
12127
0
        device: vk::Device,
12128
0
        pipeline_layout: vk::PipelineLayout,
12129
0
        p_allocator: *const vk::AllocationCallbacks,
12130
0
    ) {
12131
0
        let global = Self::instance();
12132
0
        // vkDestroyPipelineLayout
12133
0
        let device_info = global.get_device_info(device).unwrap();
12134
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12135
0
        let layer_result = device_info
12136
0
            .customized_info
12137
0
            .borrow()
12138
0
            .hooks()
12139
0
            .destroy_pipeline_layout(pipeline_layout, unsafe { p_allocator.as_ref() });
12140
0
        match layer_result {
12141
0
            LayerResult::Handled(res) => res,
12142
            LayerResult::Unhandled => unsafe {
12143
0
                (dispatch_table.destroy_pipeline_layout)(device, pipeline_layout, p_allocator)
12144
            },
12145
        }
12146
0
    }
12147
0
    extern "system" fn create_sampler(
12148
0
        device: vk::Device,
12149
0
        p_create_info: *const vk::SamplerCreateInfo,
12150
0
        p_allocator: *const vk::AllocationCallbacks,
12151
0
        p_sampler: *mut vk::Sampler,
12152
0
    ) -> vk::Result {
12153
0
        let global = Self::instance();
12154
0
        // vkCreateSampler
12155
0
        let device_info = global.get_device_info(device).unwrap();
12156
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12157
0
        let layer_result = device_info
12158
0
            .customized_info
12159
0
            .borrow()
12160
0
            .hooks()
12161
0
            .create_sampler(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12162
0
                p_allocator.as_ref()
12163
0
            });
12164
0
        match layer_result {
12165
0
            LayerResult::Handled(res) => match res {
12166
0
                Ok(res) => {
12167
0
                    *unsafe { p_sampler.as_mut() }.unwrap() = res;
12168
0
                    vk::Result::SUCCESS
12169
                }
12170
0
                Err(e) => e,
12171
            },
12172
            LayerResult::Unhandled => unsafe {
12173
0
                (dispatch_table.create_sampler)(device, p_create_info, p_allocator, p_sampler)
12174
            },
12175
        }
12176
0
    }
12177
0
    extern "system" fn destroy_sampler(
12178
0
        device: vk::Device,
12179
0
        sampler: vk::Sampler,
12180
0
        p_allocator: *const vk::AllocationCallbacks,
12181
0
    ) {
12182
0
        let global = Self::instance();
12183
0
        // vkDestroySampler
12184
0
        let device_info = global.get_device_info(device).unwrap();
12185
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12186
0
        let layer_result = device_info
12187
0
            .customized_info
12188
0
            .borrow()
12189
0
            .hooks()
12190
0
            .destroy_sampler(sampler, unsafe { p_allocator.as_ref() });
12191
0
        match layer_result {
12192
0
            LayerResult::Handled(res) => res,
12193
            LayerResult::Unhandled => unsafe {
12194
0
                (dispatch_table.destroy_sampler)(device, sampler, p_allocator)
12195
            },
12196
        }
12197
0
    }
12198
0
    extern "system" fn create_descriptor_set_layout(
12199
0
        device: vk::Device,
12200
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
12201
0
        p_allocator: *const vk::AllocationCallbacks,
12202
0
        p_set_layout: *mut vk::DescriptorSetLayout,
12203
0
    ) -> vk::Result {
12204
0
        let global = Self::instance();
12205
0
        // vkCreateDescriptorSetLayout
12206
0
        let device_info = global.get_device_info(device).unwrap();
12207
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12208
0
        let layer_result = device_info
12209
0
            .customized_info
12210
0
            .borrow()
12211
0
            .hooks()
12212
0
            .create_descriptor_set_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12213
0
                p_allocator.as_ref()
12214
0
            });
12215
0
        match layer_result {
12216
0
            LayerResult::Handled(res) => match res {
12217
0
                Ok(res) => {
12218
0
                    *unsafe { p_set_layout.as_mut() }.unwrap() = res;
12219
0
                    vk::Result::SUCCESS
12220
                }
12221
0
                Err(e) => e,
12222
            },
12223
            LayerResult::Unhandled => unsafe {
12224
0
                (dispatch_table.create_descriptor_set_layout)(
12225
0
                    device,
12226
0
                    p_create_info,
12227
0
                    p_allocator,
12228
0
                    p_set_layout,
12229
0
                )
12230
            },
12231
        }
12232
0
    }
12233
0
    extern "system" fn destroy_descriptor_set_layout(
12234
0
        device: vk::Device,
12235
0
        descriptor_set_layout: vk::DescriptorSetLayout,
12236
0
        p_allocator: *const vk::AllocationCallbacks,
12237
0
    ) {
12238
0
        let global = Self::instance();
12239
0
        // vkDestroyDescriptorSetLayout
12240
0
        let device_info = global.get_device_info(device).unwrap();
12241
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12242
0
        let layer_result = device_info
12243
0
            .customized_info
12244
0
            .borrow()
12245
0
            .hooks()
12246
0
            .destroy_descriptor_set_layout(descriptor_set_layout, unsafe { p_allocator.as_ref() });
12247
0
        match layer_result {
12248
0
            LayerResult::Handled(res) => res,
12249
            LayerResult::Unhandled => unsafe {
12250
0
                (dispatch_table.destroy_descriptor_set_layout)(
12251
0
                    device,
12252
0
                    descriptor_set_layout,
12253
0
                    p_allocator,
12254
0
                )
12255
            },
12256
        }
12257
0
    }
12258
0
    extern "system" fn create_descriptor_pool(
12259
0
        device: vk::Device,
12260
0
        p_create_info: *const vk::DescriptorPoolCreateInfo,
12261
0
        p_allocator: *const vk::AllocationCallbacks,
12262
0
        p_descriptor_pool: *mut vk::DescriptorPool,
12263
0
    ) -> vk::Result {
12264
0
        let global = Self::instance();
12265
0
        // vkCreateDescriptorPool
12266
0
        let device_info = global.get_device_info(device).unwrap();
12267
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12268
0
        let layer_result = device_info
12269
0
            .customized_info
12270
0
            .borrow()
12271
0
            .hooks()
12272
0
            .create_descriptor_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12273
0
                p_allocator.as_ref()
12274
0
            });
12275
0
        match layer_result {
12276
0
            LayerResult::Handled(res) => match res {
12277
0
                Ok(res) => {
12278
0
                    *unsafe { p_descriptor_pool.as_mut() }.unwrap() = res;
12279
0
                    vk::Result::SUCCESS
12280
                }
12281
0
                Err(e) => e,
12282
            },
12283
            LayerResult::Unhandled => unsafe {
12284
0
                (dispatch_table.create_descriptor_pool)(
12285
0
                    device,
12286
0
                    p_create_info,
12287
0
                    p_allocator,
12288
0
                    p_descriptor_pool,
12289
0
                )
12290
            },
12291
        }
12292
0
    }
12293
0
    extern "system" fn destroy_descriptor_pool(
12294
0
        device: vk::Device,
12295
0
        descriptor_pool: vk::DescriptorPool,
12296
0
        p_allocator: *const vk::AllocationCallbacks,
12297
0
    ) {
12298
0
        let global = Self::instance();
12299
0
        // vkDestroyDescriptorPool
12300
0
        let device_info = global.get_device_info(device).unwrap();
12301
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12302
0
        let layer_result = device_info
12303
0
            .customized_info
12304
0
            .borrow()
12305
0
            .hooks()
12306
0
            .destroy_descriptor_pool(descriptor_pool, unsafe { p_allocator.as_ref() });
12307
0
        match layer_result {
12308
0
            LayerResult::Handled(res) => res,
12309
            LayerResult::Unhandled => unsafe {
12310
0
                (dispatch_table.destroy_descriptor_pool)(device, descriptor_pool, p_allocator)
12311
            },
12312
        }
12313
0
    }
12314
0
    extern "system" fn reset_descriptor_pool(
12315
0
        device: vk::Device,
12316
0
        descriptor_pool: vk::DescriptorPool,
12317
0
        flags: vk::DescriptorPoolResetFlags,
12318
0
    ) -> vk::Result {
12319
0
        let global = Self::instance();
12320
0
        // vkResetDescriptorPool
12321
0
        let device_info = global.get_device_info(device).unwrap();
12322
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12323
0
        let layer_result = device_info
12324
0
            .customized_info
12325
0
            .borrow()
12326
0
            .hooks()
12327
0
            .reset_descriptor_pool(descriptor_pool, flags);
12328
0
        match layer_result {
12329
0
            LayerResult::Handled(res) => match res {
12330
0
                Ok(()) => vk::Result::SUCCESS,
12331
0
                Err(e) => e,
12332
            },
12333
            LayerResult::Unhandled => unsafe {
12334
0
                (dispatch_table.reset_descriptor_pool)(device, descriptor_pool, flags)
12335
            },
12336
        }
12337
0
    }
12338
0
    extern "system" fn allocate_descriptor_sets(
12339
0
        device: vk::Device,
12340
0
        p_allocate_info: *const vk::DescriptorSetAllocateInfo,
12341
0
        p_descriptor_sets: *mut vk::DescriptorSet,
12342
0
    ) -> vk::Result {
12343
0
        let global = Self::instance();
12344
0
        // vkAllocateDescriptorSets
12345
0
        let device_info = global.get_device_info(device).unwrap();
12346
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12347
0
        let layer_result = device_info
12348
0
            .customized_info
12349
0
            .borrow()
12350
0
            .hooks()
12351
0
            .allocate_descriptor_sets(unsafe { p_allocate_info.as_ref() }.unwrap());
12352
0
        match layer_result {
12353
0
            LayerResult::Handled(res) => match res {
12354
0
                Ok(res) => {
12355
0
                    unsafe {
12356
0
                        std::slice::from_raw_parts_mut(
12357
0
                            p_descriptor_sets,
12358
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12359
0
                                .descriptor_set_count
12360
0
                                .try_into()
12361
0
                                .unwrap(),
12362
0
                        )
12363
0
                    }
12364
0
                    .copy_from_slice(&res);
12365
0
                    vk::Result::SUCCESS
12366
                }
12367
0
                Err(e) => e,
12368
            },
12369
            LayerResult::Unhandled => unsafe {
12370
0
                (dispatch_table.allocate_descriptor_sets)(
12371
0
                    device,
12372
0
                    p_allocate_info,
12373
0
                    p_descriptor_sets,
12374
0
                )
12375
            },
12376
        }
12377
0
    }
12378
0
    extern "system" fn free_descriptor_sets(
12379
0
        device: vk::Device,
12380
0
        descriptor_pool: vk::DescriptorPool,
12381
0
        descriptor_set_count: u32,
12382
0
        p_descriptor_sets: *const vk::DescriptorSet,
12383
0
    ) -> vk::Result {
12384
0
        let global = Self::instance();
12385
0
        // vkFreeDescriptorSets
12386
0
        let device_info = global.get_device_info(device).unwrap();
12387
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12388
0
        #[allow(clippy::unnecessary_cast)]
12389
0
        let layer_result = device_info
12390
0
            .customized_info
12391
0
            .borrow()
12392
0
            .hooks()
12393
0
            .free_descriptor_sets(descriptor_pool, unsafe {
12394
0
                std::slice::from_raw_parts(p_descriptor_sets, descriptor_set_count as usize)
12395
0
            });
12396
0
        match layer_result {
12397
0
            LayerResult::Handled(res) => match res {
12398
0
                Ok(()) => vk::Result::SUCCESS,
12399
0
                Err(e) => e,
12400
            },
12401
            LayerResult::Unhandled => unsafe {
12402
0
                (dispatch_table.free_descriptor_sets)(
12403
0
                    device,
12404
0
                    descriptor_pool,
12405
0
                    descriptor_set_count,
12406
0
                    p_descriptor_sets,
12407
0
                )
12408
            },
12409
        }
12410
0
    }
12411
0
    extern "system" fn update_descriptor_sets(
12412
0
        device: vk::Device,
12413
0
        descriptor_write_count: u32,
12414
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
12415
0
        descriptor_copy_count: u32,
12416
0
        p_descriptor_copies: *const vk::CopyDescriptorSet,
12417
0
    ) {
12418
0
        let global = Self::instance();
12419
0
        // vkUpdateDescriptorSets
12420
0
        let device_info = global.get_device_info(device).unwrap();
12421
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12422
0
        #[allow(clippy::unnecessary_cast)]
12423
0
        #[allow(clippy::unnecessary_cast)]
12424
0
        let layer_result = device_info
12425
0
            .customized_info
12426
0
            .borrow()
12427
0
            .hooks()
12428
0
            .update_descriptor_sets(
12429
0
                unsafe {
12430
0
                    std::slice::from_raw_parts(p_descriptor_writes, descriptor_write_count as usize)
12431
0
                },
12432
0
                unsafe {
12433
0
                    std::slice::from_raw_parts(p_descriptor_copies, descriptor_copy_count as usize)
12434
0
                },
12435
0
            );
12436
0
        match layer_result {
12437
0
            LayerResult::Handled(res) => res,
12438
            LayerResult::Unhandled => unsafe {
12439
0
                (dispatch_table.update_descriptor_sets)(
12440
0
                    device,
12441
0
                    descriptor_write_count,
12442
0
                    p_descriptor_writes,
12443
0
                    descriptor_copy_count,
12444
0
                    p_descriptor_copies,
12445
0
                )
12446
            },
12447
        }
12448
0
    }
12449
0
    extern "system" fn create_framebuffer(
12450
0
        device: vk::Device,
12451
0
        p_create_info: *const vk::FramebufferCreateInfo,
12452
0
        p_allocator: *const vk::AllocationCallbacks,
12453
0
        p_framebuffer: *mut vk::Framebuffer,
12454
0
    ) -> vk::Result {
12455
0
        let global = Self::instance();
12456
0
        // vkCreateFramebuffer
12457
0
        let device_info = global.get_device_info(device).unwrap();
12458
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12459
0
        let layer_result = device_info
12460
0
            .customized_info
12461
0
            .borrow()
12462
0
            .hooks()
12463
0
            .create_framebuffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12464
0
                p_allocator.as_ref()
12465
0
            });
12466
0
        match layer_result {
12467
0
            LayerResult::Handled(res) => match res {
12468
0
                Ok(res) => {
12469
0
                    *unsafe { p_framebuffer.as_mut() }.unwrap() = res;
12470
0
                    vk::Result::SUCCESS
12471
                }
12472
0
                Err(e) => e,
12473
            },
12474
            LayerResult::Unhandled => unsafe {
12475
0
                (dispatch_table.create_framebuffer)(
12476
0
                    device,
12477
0
                    p_create_info,
12478
0
                    p_allocator,
12479
0
                    p_framebuffer,
12480
0
                )
12481
            },
12482
        }
12483
0
    }
12484
0
    extern "system" fn destroy_framebuffer(
12485
0
        device: vk::Device,
12486
0
        framebuffer: vk::Framebuffer,
12487
0
        p_allocator: *const vk::AllocationCallbacks,
12488
0
    ) {
12489
0
        let global = Self::instance();
12490
0
        // vkDestroyFramebuffer
12491
0
        let device_info = global.get_device_info(device).unwrap();
12492
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12493
0
        let layer_result = device_info
12494
0
            .customized_info
12495
0
            .borrow()
12496
0
            .hooks()
12497
0
            .destroy_framebuffer(framebuffer, unsafe { p_allocator.as_ref() });
12498
0
        match layer_result {
12499
0
            LayerResult::Handled(res) => res,
12500
            LayerResult::Unhandled => unsafe {
12501
0
                (dispatch_table.destroy_framebuffer)(device, framebuffer, p_allocator)
12502
            },
12503
        }
12504
0
    }
12505
0
    extern "system" fn create_render_pass(
12506
0
        device: vk::Device,
12507
0
        p_create_info: *const vk::RenderPassCreateInfo,
12508
0
        p_allocator: *const vk::AllocationCallbacks,
12509
0
        p_render_pass: *mut vk::RenderPass,
12510
0
    ) -> vk::Result {
12511
0
        let global = Self::instance();
12512
0
        // vkCreateRenderPass
12513
0
        let device_info = global.get_device_info(device).unwrap();
12514
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12515
0
        let layer_result = device_info
12516
0
            .customized_info
12517
0
            .borrow()
12518
0
            .hooks()
12519
0
            .create_render_pass(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12520
0
                p_allocator.as_ref()
12521
0
            });
12522
0
        match layer_result {
12523
0
            LayerResult::Handled(res) => match res {
12524
0
                Ok(res) => {
12525
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
12526
0
                    vk::Result::SUCCESS
12527
                }
12528
0
                Err(e) => e,
12529
            },
12530
            LayerResult::Unhandled => unsafe {
12531
0
                (dispatch_table.create_render_pass)(
12532
0
                    device,
12533
0
                    p_create_info,
12534
0
                    p_allocator,
12535
0
                    p_render_pass,
12536
0
                )
12537
            },
12538
        }
12539
0
    }
12540
0
    extern "system" fn destroy_render_pass(
12541
0
        device: vk::Device,
12542
0
        render_pass: vk::RenderPass,
12543
0
        p_allocator: *const vk::AllocationCallbacks,
12544
0
    ) {
12545
0
        let global = Self::instance();
12546
0
        // vkDestroyRenderPass
12547
0
        let device_info = global.get_device_info(device).unwrap();
12548
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12549
0
        let layer_result = device_info
12550
0
            .customized_info
12551
0
            .borrow()
12552
0
            .hooks()
12553
0
            .destroy_render_pass(render_pass, unsafe { p_allocator.as_ref() });
12554
0
        match layer_result {
12555
0
            LayerResult::Handled(res) => res,
12556
            LayerResult::Unhandled => unsafe {
12557
0
                (dispatch_table.destroy_render_pass)(device, render_pass, p_allocator)
12558
            },
12559
        }
12560
0
    }
12561
0
    extern "system" fn get_render_area_granularity(
12562
0
        device: vk::Device,
12563
0
        render_pass: vk::RenderPass,
12564
0
        p_granularity: *mut vk::Extent2D,
12565
0
    ) {
12566
0
        let global = Self::instance();
12567
0
        // vkGetRenderAreaGranularity
12568
0
        let device_info = global.get_device_info(device).unwrap();
12569
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12570
0
        let layer_result = device_info
12571
0
            .customized_info
12572
0
            .borrow()
12573
0
            .hooks()
12574
0
            .get_render_area_granularity(render_pass, unsafe { p_granularity.as_mut() }.unwrap());
12575
0
        match layer_result {
12576
0
            LayerResult::Handled(res) => res,
12577
            LayerResult::Unhandled => unsafe {
12578
0
                (dispatch_table.get_render_area_granularity)(device, render_pass, p_granularity)
12579
            },
12580
        }
12581
0
    }
12582
0
    extern "system" fn create_command_pool(
12583
0
        device: vk::Device,
12584
0
        p_create_info: *const vk::CommandPoolCreateInfo,
12585
0
        p_allocator: *const vk::AllocationCallbacks,
12586
0
        p_command_pool: *mut vk::CommandPool,
12587
0
    ) -> vk::Result {
12588
0
        let global = Self::instance();
12589
0
        // vkCreateCommandPool
12590
0
        let device_info = global.get_device_info(device).unwrap();
12591
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12592
0
        let layer_result = device_info
12593
0
            .customized_info
12594
0
            .borrow()
12595
0
            .hooks()
12596
0
            .create_command_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12597
0
                p_allocator.as_ref()
12598
0
            });
12599
0
        match layer_result {
12600
0
            LayerResult::Handled(res) => match res {
12601
0
                Ok(res) => {
12602
0
                    *unsafe { p_command_pool.as_mut() }.unwrap() = res;
12603
0
                    vk::Result::SUCCESS
12604
                }
12605
0
                Err(e) => e,
12606
            },
12607
            LayerResult::Unhandled => unsafe {
12608
0
                (dispatch_table.create_command_pool)(
12609
0
                    device,
12610
0
                    p_create_info,
12611
0
                    p_allocator,
12612
0
                    p_command_pool,
12613
0
                )
12614
            },
12615
        }
12616
0
    }
12617
0
    extern "system" fn destroy_command_pool(
12618
0
        device: vk::Device,
12619
0
        command_pool: vk::CommandPool,
12620
0
        p_allocator: *const vk::AllocationCallbacks,
12621
0
    ) {
12622
0
        let global = Self::instance();
12623
0
        // vkDestroyCommandPool
12624
0
        let device_info = global.get_device_info(device).unwrap();
12625
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12626
0
        let layer_result = device_info
12627
0
            .customized_info
12628
0
            .borrow()
12629
0
            .hooks()
12630
0
            .destroy_command_pool(command_pool, unsafe { p_allocator.as_ref() });
12631
0
        match layer_result {
12632
0
            LayerResult::Handled(res) => res,
12633
            LayerResult::Unhandled => unsafe {
12634
0
                (dispatch_table.destroy_command_pool)(device, command_pool, p_allocator)
12635
            },
12636
        }
12637
0
    }
12638
0
    extern "system" fn reset_command_pool(
12639
0
        device: vk::Device,
12640
0
        command_pool: vk::CommandPool,
12641
0
        flags: vk::CommandPoolResetFlags,
12642
0
    ) -> vk::Result {
12643
0
        let global = Self::instance();
12644
0
        // vkResetCommandPool
12645
0
        let device_info = global.get_device_info(device).unwrap();
12646
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12647
0
        let layer_result = device_info
12648
0
            .customized_info
12649
0
            .borrow()
12650
0
            .hooks()
12651
0
            .reset_command_pool(command_pool, flags);
12652
0
        match layer_result {
12653
0
            LayerResult::Handled(res) => match res {
12654
0
                Ok(()) => vk::Result::SUCCESS,
12655
0
                Err(e) => e,
12656
            },
12657
            LayerResult::Unhandled => unsafe {
12658
0
                (dispatch_table.reset_command_pool)(device, command_pool, flags)
12659
            },
12660
        }
12661
0
    }
12662
0
    extern "system" fn allocate_command_buffers(
12663
0
        device: vk::Device,
12664
0
        p_allocate_info: *const vk::CommandBufferAllocateInfo,
12665
0
        p_command_buffers: *mut vk::CommandBuffer,
12666
0
    ) -> vk::Result {
12667
0
        let global = Self::instance();
12668
0
        // vkAllocateCommandBuffers
12669
0
        let device_info = global.get_device_info(device).unwrap();
12670
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12671
0
        let layer_result = device_info
12672
0
            .customized_info
12673
0
            .borrow()
12674
0
            .hooks()
12675
0
            .allocate_command_buffers(unsafe { p_allocate_info.as_ref() }.unwrap());
12676
0
        match layer_result {
12677
0
            LayerResult::Handled(res) => match res {
12678
0
                Ok(res) => {
12679
0
                    unsafe {
12680
0
                        std::slice::from_raw_parts_mut(
12681
0
                            p_command_buffers,
12682
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12683
0
                                .command_buffer_count
12684
0
                                .try_into()
12685
0
                                .unwrap(),
12686
0
                        )
12687
0
                    }
12688
0
                    .copy_from_slice(&res);
12689
0
                    vk::Result::SUCCESS
12690
                }
12691
0
                Err(e) => e,
12692
            },
12693
            LayerResult::Unhandled => unsafe {
12694
0
                (dispatch_table.allocate_command_buffers)(
12695
0
                    device,
12696
0
                    p_allocate_info,
12697
0
                    p_command_buffers,
12698
0
                )
12699
            },
12700
        }
12701
0
    }
12702
0
    extern "system" fn free_command_buffers(
12703
0
        device: vk::Device,
12704
0
        command_pool: vk::CommandPool,
12705
0
        command_buffer_count: u32,
12706
0
        p_command_buffers: *const vk::CommandBuffer,
12707
0
    ) {
12708
0
        let global = Self::instance();
12709
0
        // vkFreeCommandBuffers
12710
0
        let device_info = global.get_device_info(device).unwrap();
12711
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12712
0
        #[allow(clippy::unnecessary_cast)]
12713
0
        let layer_result = device_info
12714
0
            .customized_info
12715
0
            .borrow()
12716
0
            .hooks()
12717
0
            .free_command_buffers(command_pool, unsafe {
12718
0
                std::slice::from_raw_parts(p_command_buffers, command_buffer_count as usize)
12719
0
            });
12720
0
        match layer_result {
12721
0
            LayerResult::Handled(res) => res,
12722
            LayerResult::Unhandled => unsafe {
12723
0
                (dispatch_table.free_command_buffers)(
12724
0
                    device,
12725
0
                    command_pool,
12726
0
                    command_buffer_count,
12727
0
                    p_command_buffers,
12728
0
                )
12729
            },
12730
        }
12731
0
    }
12732
0
    extern "system" fn begin_command_buffer(
12733
0
        command_buffer: vk::CommandBuffer,
12734
0
        p_begin_info: *const vk::CommandBufferBeginInfo,
12735
0
    ) -> vk::Result {
12736
0
        let global = Self::instance();
12737
0
        // vkBeginCommandBuffer
12738
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12739
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12740
0
        let layer_result = device_info
12741
0
            .customized_info
12742
0
            .borrow()
12743
0
            .hooks()
12744
0
            .begin_command_buffer(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
12745
0
        match layer_result {
12746
0
            LayerResult::Handled(res) => match res {
12747
0
                Ok(()) => vk::Result::SUCCESS,
12748
0
                Err(e) => e,
12749
            },
12750
            LayerResult::Unhandled => unsafe {
12751
0
                (dispatch_table.begin_command_buffer)(command_buffer, p_begin_info)
12752
            },
12753
        }
12754
0
    }
12755
0
    extern "system" fn end_command_buffer(command_buffer: vk::CommandBuffer) -> vk::Result {
12756
0
        let global = Self::instance();
12757
0
        // vkEndCommandBuffer
12758
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12759
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12760
0
        let layer_result = device_info
12761
0
            .customized_info
12762
0
            .borrow()
12763
0
            .hooks()
12764
0
            .end_command_buffer(command_buffer);
12765
0
        match layer_result {
12766
0
            LayerResult::Handled(res) => match res {
12767
0
                Ok(()) => vk::Result::SUCCESS,
12768
0
                Err(e) => e,
12769
            },
12770
            LayerResult::Unhandled => unsafe {
12771
0
                (dispatch_table.end_command_buffer)(command_buffer)
12772
            },
12773
        }
12774
0
    }
12775
0
    extern "system" fn reset_command_buffer(
12776
0
        command_buffer: vk::CommandBuffer,
12777
0
        flags: vk::CommandBufferResetFlags,
12778
0
    ) -> vk::Result {
12779
0
        let global = Self::instance();
12780
0
        // vkResetCommandBuffer
12781
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12782
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12783
0
        let layer_result = device_info
12784
0
            .customized_info
12785
0
            .borrow()
12786
0
            .hooks()
12787
0
            .reset_command_buffer(command_buffer, flags);
12788
0
        match layer_result {
12789
0
            LayerResult::Handled(res) => match res {
12790
0
                Ok(()) => vk::Result::SUCCESS,
12791
0
                Err(e) => e,
12792
            },
12793
            LayerResult::Unhandled => unsafe {
12794
0
                (dispatch_table.reset_command_buffer)(command_buffer, flags)
12795
            },
12796
        }
12797
0
    }
12798
0
    extern "system" fn cmd_bind_pipeline(
12799
0
        command_buffer: vk::CommandBuffer,
12800
0
        pipeline_bind_point: vk::PipelineBindPoint,
12801
0
        pipeline: vk::Pipeline,
12802
0
    ) {
12803
0
        let global = Self::instance();
12804
0
        // vkCmdBindPipeline
12805
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12806
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12807
0
        let layer_result = device_info
12808
0
            .customized_info
12809
0
            .borrow()
12810
0
            .hooks()
12811
0
            .cmd_bind_pipeline(command_buffer, pipeline_bind_point, pipeline);
12812
0
        match layer_result {
12813
0
            LayerResult::Handled(res) => res,
12814
            LayerResult::Unhandled => unsafe {
12815
0
                (dispatch_table.cmd_bind_pipeline)(command_buffer, pipeline_bind_point, pipeline)
12816
            },
12817
        }
12818
0
    }
12819
0
    extern "system" fn cmd_set_viewport(
12820
0
        command_buffer: vk::CommandBuffer,
12821
0
        first_viewport: u32,
12822
0
        viewport_count: u32,
12823
0
        p_viewports: *const vk::Viewport,
12824
0
    ) {
12825
0
        let global = Self::instance();
12826
0
        // vkCmdSetViewport
12827
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12828
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12829
0
        #[allow(clippy::unnecessary_cast)]
12830
0
        let layer_result = device_info
12831
0
            .customized_info
12832
0
            .borrow()
12833
0
            .hooks()
12834
0
            .cmd_set_viewport(command_buffer, first_viewport, unsafe {
12835
0
                std::slice::from_raw_parts(p_viewports, viewport_count as usize)
12836
0
            });
12837
0
        match layer_result {
12838
0
            LayerResult::Handled(res) => res,
12839
            LayerResult::Unhandled => unsafe {
12840
0
                (dispatch_table.cmd_set_viewport)(
12841
0
                    command_buffer,
12842
0
                    first_viewport,
12843
0
                    viewport_count,
12844
0
                    p_viewports,
12845
0
                )
12846
            },
12847
        }
12848
0
    }
12849
0
    extern "system" fn cmd_set_scissor(
12850
0
        command_buffer: vk::CommandBuffer,
12851
0
        first_scissor: u32,
12852
0
        scissor_count: u32,
12853
0
        p_scissors: *const vk::Rect2D,
12854
0
    ) {
12855
0
        let global = Self::instance();
12856
0
        // vkCmdSetScissor
12857
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12858
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12859
0
        #[allow(clippy::unnecessary_cast)]
12860
0
        let layer_result = device_info
12861
0
            .customized_info
12862
0
            .borrow()
12863
0
            .hooks()
12864
0
            .cmd_set_scissor(command_buffer, first_scissor, unsafe {
12865
0
                std::slice::from_raw_parts(p_scissors, scissor_count as usize)
12866
0
            });
12867
0
        match layer_result {
12868
0
            LayerResult::Handled(res) => res,
12869
            LayerResult::Unhandled => unsafe {
12870
0
                (dispatch_table.cmd_set_scissor)(
12871
0
                    command_buffer,
12872
0
                    first_scissor,
12873
0
                    scissor_count,
12874
0
                    p_scissors,
12875
0
                )
12876
            },
12877
        }
12878
0
    }
12879
0
    extern "system" fn cmd_set_line_width(command_buffer: vk::CommandBuffer, line_width: f32) {
12880
0
        let global = Self::instance();
12881
0
        // vkCmdSetLineWidth
12882
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12883
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12884
0
        let layer_result = device_info
12885
0
            .customized_info
12886
0
            .borrow()
12887
0
            .hooks()
12888
0
            .cmd_set_line_width(command_buffer, line_width);
12889
0
        match layer_result {
12890
0
            LayerResult::Handled(res) => res,
12891
            LayerResult::Unhandled => unsafe {
12892
0
                (dispatch_table.cmd_set_line_width)(command_buffer, line_width)
12893
            },
12894
        }
12895
0
    }
12896
0
    extern "system" fn cmd_set_depth_bias(
12897
0
        command_buffer: vk::CommandBuffer,
12898
0
        depth_bias_constant_factor: f32,
12899
0
        depth_bias_clamp: f32,
12900
0
        depth_bias_slope_factor: f32,
12901
0
    ) {
12902
0
        let global = Self::instance();
12903
0
        // vkCmdSetDepthBias
12904
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12905
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12906
0
        let layer_result = device_info
12907
0
            .customized_info
12908
0
            .borrow()
12909
0
            .hooks()
12910
0
            .cmd_set_depth_bias(
12911
0
                command_buffer,
12912
0
                depth_bias_constant_factor,
12913
0
                depth_bias_clamp,
12914
0
                depth_bias_slope_factor,
12915
0
            );
12916
0
        match layer_result {
12917
0
            LayerResult::Handled(res) => res,
12918
            LayerResult::Unhandled => unsafe {
12919
0
                (dispatch_table.cmd_set_depth_bias)(
12920
0
                    command_buffer,
12921
0
                    depth_bias_constant_factor,
12922
0
                    depth_bias_clamp,
12923
0
                    depth_bias_slope_factor,
12924
0
                )
12925
            },
12926
        }
12927
0
    }
12928
0
    extern "system" fn cmd_set_blend_constants(
12929
0
        command_buffer: vk::CommandBuffer,
12930
0
        blend_constants: *const [f32; 4],
12931
0
    ) {
12932
0
        let global = Self::instance();
12933
0
        // vkCmdSetBlendConstants
12934
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12935
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12936
0
        let blend_constants = unsafe { blend_constants.as_ref() }.unwrap();
12937
0
        let layer_result = device_info
12938
0
            .customized_info
12939
0
            .borrow()
12940
0
            .hooks()
12941
0
            .cmd_set_blend_constants(command_buffer, blend_constants);
12942
0
        match layer_result {
12943
0
            LayerResult::Handled(res) => res,
12944
            LayerResult::Unhandled => unsafe {
12945
0
                (dispatch_table.cmd_set_blend_constants)(command_buffer, blend_constants)
12946
            },
12947
        }
12948
0
    }
12949
0
    extern "system" fn cmd_set_depth_bounds(
12950
0
        command_buffer: vk::CommandBuffer,
12951
0
        min_depth_bounds: f32,
12952
0
        max_depth_bounds: f32,
12953
0
    ) {
12954
0
        let global = Self::instance();
12955
0
        // vkCmdSetDepthBounds
12956
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12957
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12958
0
        let layer_result = device_info
12959
0
            .customized_info
12960
0
            .borrow()
12961
0
            .hooks()
12962
0
            .cmd_set_depth_bounds(command_buffer, min_depth_bounds, max_depth_bounds);
12963
0
        match layer_result {
12964
0
            LayerResult::Handled(res) => res,
12965
            LayerResult::Unhandled => unsafe {
12966
0
                (dispatch_table.cmd_set_depth_bounds)(
12967
0
                    command_buffer,
12968
0
                    min_depth_bounds,
12969
0
                    max_depth_bounds,
12970
0
                )
12971
            },
12972
        }
12973
0
    }
12974
0
    extern "system" fn cmd_set_stencil_compare_mask(
12975
0
        command_buffer: vk::CommandBuffer,
12976
0
        face_mask: vk::StencilFaceFlags,
12977
0
        compare_mask: u32,
12978
0
    ) {
12979
0
        let global = Self::instance();
12980
0
        // vkCmdSetStencilCompareMask
12981
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12982
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12983
0
        let layer_result = device_info
12984
0
            .customized_info
12985
0
            .borrow()
12986
0
            .hooks()
12987
0
            .cmd_set_stencil_compare_mask(command_buffer, face_mask, compare_mask);
12988
0
        match layer_result {
12989
0
            LayerResult::Handled(res) => res,
12990
            LayerResult::Unhandled => unsafe {
12991
0
                (dispatch_table.cmd_set_stencil_compare_mask)(
12992
0
                    command_buffer,
12993
0
                    face_mask,
12994
0
                    compare_mask,
12995
0
                )
12996
            },
12997
        }
12998
0
    }
12999
0
    extern "system" fn cmd_set_stencil_write_mask(
13000
0
        command_buffer: vk::CommandBuffer,
13001
0
        face_mask: vk::StencilFaceFlags,
13002
0
        write_mask: u32,
13003
0
    ) {
13004
0
        let global = Self::instance();
13005
0
        // vkCmdSetStencilWriteMask
13006
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13007
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13008
0
        let layer_result = device_info
13009
0
            .customized_info
13010
0
            .borrow()
13011
0
            .hooks()
13012
0
            .cmd_set_stencil_write_mask(command_buffer, face_mask, write_mask);
13013
0
        match layer_result {
13014
0
            LayerResult::Handled(res) => res,
13015
            LayerResult::Unhandled => unsafe {
13016
0
                (dispatch_table.cmd_set_stencil_write_mask)(command_buffer, face_mask, write_mask)
13017
            },
13018
        }
13019
0
    }
13020
0
    extern "system" fn cmd_set_stencil_reference(
13021
0
        command_buffer: vk::CommandBuffer,
13022
0
        face_mask: vk::StencilFaceFlags,
13023
0
        reference: u32,
13024
0
    ) {
13025
0
        let global = Self::instance();
13026
0
        // vkCmdSetStencilReference
13027
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13028
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13029
0
        let layer_result = device_info
13030
0
            .customized_info
13031
0
            .borrow()
13032
0
            .hooks()
13033
0
            .cmd_set_stencil_reference(command_buffer, face_mask, reference);
13034
0
        match layer_result {
13035
0
            LayerResult::Handled(res) => res,
13036
            LayerResult::Unhandled => unsafe {
13037
0
                (dispatch_table.cmd_set_stencil_reference)(command_buffer, face_mask, reference)
13038
            },
13039
        }
13040
0
    }
13041
0
    extern "system" fn cmd_bind_descriptor_sets(
13042
0
        command_buffer: vk::CommandBuffer,
13043
0
        pipeline_bind_point: vk::PipelineBindPoint,
13044
0
        layout: vk::PipelineLayout,
13045
0
        first_set: u32,
13046
0
        descriptor_set_count: u32,
13047
0
        p_descriptor_sets: *const vk::DescriptorSet,
13048
0
        dynamic_offset_count: u32,
13049
0
        p_dynamic_offsets: *const u32,
13050
0
    ) {
13051
0
        let global = Self::instance();
13052
0
        // vkCmdBindDescriptorSets
13053
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13054
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13055
0
        #[allow(clippy::unnecessary_cast)]
13056
0
        #[allow(clippy::unnecessary_cast)]
13057
0
        let layer_result = device_info
13058
0
            .customized_info
13059
0
            .borrow()
13060
0
            .hooks()
13061
0
            .cmd_bind_descriptor_sets(
13062
0
                command_buffer,
13063
0
                pipeline_bind_point,
13064
0
                layout,
13065
0
                first_set,
13066
0
                unsafe {
13067
0
                    std::slice::from_raw_parts(p_descriptor_sets, descriptor_set_count as usize)
13068
0
                },
13069
0
                unsafe {
13070
0
                    std::slice::from_raw_parts(p_dynamic_offsets, dynamic_offset_count as usize)
13071
0
                },
13072
0
            );
13073
0
        match layer_result {
13074
0
            LayerResult::Handled(res) => res,
13075
            LayerResult::Unhandled => unsafe {
13076
0
                (dispatch_table.cmd_bind_descriptor_sets)(
13077
0
                    command_buffer,
13078
0
                    pipeline_bind_point,
13079
0
                    layout,
13080
0
                    first_set,
13081
0
                    descriptor_set_count,
13082
0
                    p_descriptor_sets,
13083
0
                    dynamic_offset_count,
13084
0
                    p_dynamic_offsets,
13085
0
                )
13086
            },
13087
        }
13088
0
    }
13089
0
    extern "system" fn cmd_bind_index_buffer(
13090
0
        command_buffer: vk::CommandBuffer,
13091
0
        buffer: vk::Buffer,
13092
0
        offset: vk::DeviceSize,
13093
0
        index_type: vk::IndexType,
13094
0
    ) {
13095
0
        let global = Self::instance();
13096
0
        // vkCmdBindIndexBuffer
13097
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13098
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13099
0
        let layer_result = device_info
13100
0
            .customized_info
13101
0
            .borrow()
13102
0
            .hooks()
13103
0
            .cmd_bind_index_buffer(command_buffer, buffer, offset, index_type);
13104
0
        match layer_result {
13105
0
            LayerResult::Handled(res) => res,
13106
            LayerResult::Unhandled => unsafe {
13107
0
                (dispatch_table.cmd_bind_index_buffer)(command_buffer, buffer, offset, index_type)
13108
            },
13109
        }
13110
0
    }
13111
0
    extern "system" fn cmd_bind_vertex_buffers(
13112
0
        command_buffer: vk::CommandBuffer,
13113
0
        first_binding: u32,
13114
0
        binding_count: u32,
13115
0
        p_buffers: *const vk::Buffer,
13116
0
        p_offsets: *const vk::DeviceSize,
13117
0
    ) {
13118
0
        let global = Self::instance();
13119
0
        // vkCmdBindVertexBuffers
13120
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13121
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13122
0
        #[allow(clippy::unnecessary_cast)]
13123
0
        #[allow(clippy::unnecessary_cast)]
13124
0
        let layer_result = device_info
13125
0
            .customized_info
13126
0
            .borrow()
13127
0
            .hooks()
13128
0
            .cmd_bind_vertex_buffers(
13129
0
                command_buffer,
13130
0
                first_binding,
13131
0
                unsafe { std::slice::from_raw_parts(p_buffers, binding_count as usize) },
13132
0
                unsafe { std::slice::from_raw_parts(p_offsets, binding_count as usize) },
13133
0
            );
13134
0
        match layer_result {
13135
0
            LayerResult::Handled(res) => res,
13136
            LayerResult::Unhandled => unsafe {
13137
0
                (dispatch_table.cmd_bind_vertex_buffers)(
13138
0
                    command_buffer,
13139
0
                    first_binding,
13140
0
                    binding_count,
13141
0
                    p_buffers,
13142
0
                    p_offsets,
13143
0
                )
13144
            },
13145
        }
13146
0
    }
13147
0
    extern "system" fn cmd_draw(
13148
0
        command_buffer: vk::CommandBuffer,
13149
0
        vertex_count: u32,
13150
0
        instance_count: u32,
13151
0
        first_vertex: u32,
13152
0
        first_instance: u32,
13153
0
    ) {
13154
0
        let global = Self::instance();
13155
0
        // vkCmdDraw
13156
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13157
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13158
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_draw(
13159
0
            command_buffer,
13160
0
            vertex_count,
13161
0
            instance_count,
13162
0
            first_vertex,
13163
0
            first_instance,
13164
0
        );
13165
0
        match layer_result {
13166
0
            LayerResult::Handled(res) => res,
13167
            LayerResult::Unhandled => unsafe {
13168
0
                (dispatch_table.cmd_draw)(
13169
0
                    command_buffer,
13170
0
                    vertex_count,
13171
0
                    instance_count,
13172
0
                    first_vertex,
13173
0
                    first_instance,
13174
0
                )
13175
            },
13176
        }
13177
0
    }
13178
0
    extern "system" fn cmd_draw_indexed(
13179
0
        command_buffer: vk::CommandBuffer,
13180
0
        index_count: u32,
13181
0
        instance_count: u32,
13182
0
        first_index: u32,
13183
0
        vertex_offset: i32,
13184
0
        first_instance: u32,
13185
0
    ) {
13186
0
        let global = Self::instance();
13187
0
        // vkCmdDrawIndexed
13188
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13189
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13190
0
        let layer_result = device_info
13191
0
            .customized_info
13192
0
            .borrow()
13193
0
            .hooks()
13194
0
            .cmd_draw_indexed(
13195
0
                command_buffer,
13196
0
                index_count,
13197
0
                instance_count,
13198
0
                first_index,
13199
0
                vertex_offset,
13200
0
                first_instance,
13201
0
            );
13202
0
        match layer_result {
13203
0
            LayerResult::Handled(res) => res,
13204
            LayerResult::Unhandled => unsafe {
13205
0
                (dispatch_table.cmd_draw_indexed)(
13206
0
                    command_buffer,
13207
0
                    index_count,
13208
0
                    instance_count,
13209
0
                    first_index,
13210
0
                    vertex_offset,
13211
0
                    first_instance,
13212
0
                )
13213
            },
13214
        }
13215
0
    }
13216
0
    extern "system" fn cmd_draw_indirect(
13217
0
        command_buffer: vk::CommandBuffer,
13218
0
        buffer: vk::Buffer,
13219
0
        offset: vk::DeviceSize,
13220
0
        draw_count: u32,
13221
0
        stride: u32,
13222
0
    ) {
13223
0
        let global = Self::instance();
13224
0
        // vkCmdDrawIndirect
13225
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13226
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13227
0
        let layer_result = device_info
13228
0
            .customized_info
13229
0
            .borrow()
13230
0
            .hooks()
13231
0
            .cmd_draw_indirect(command_buffer, buffer, offset, draw_count, stride);
13232
0
        match layer_result {
13233
0
            LayerResult::Handled(res) => res,
13234
            LayerResult::Unhandled => unsafe {
13235
0
                (dispatch_table.cmd_draw_indirect)(
13236
0
                    command_buffer,
13237
0
                    buffer,
13238
0
                    offset,
13239
0
                    draw_count,
13240
0
                    stride,
13241
0
                )
13242
            },
13243
        }
13244
0
    }
13245
0
    extern "system" fn cmd_draw_indexed_indirect(
13246
0
        command_buffer: vk::CommandBuffer,
13247
0
        buffer: vk::Buffer,
13248
0
        offset: vk::DeviceSize,
13249
0
        draw_count: u32,
13250
0
        stride: u32,
13251
0
    ) {
13252
0
        let global = Self::instance();
13253
0
        // vkCmdDrawIndexedIndirect
13254
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13255
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13256
0
        let layer_result = device_info
13257
0
            .customized_info
13258
0
            .borrow()
13259
0
            .hooks()
13260
0
            .cmd_draw_indexed_indirect(command_buffer, buffer, offset, draw_count, stride);
13261
0
        match layer_result {
13262
0
            LayerResult::Handled(res) => res,
13263
            LayerResult::Unhandled => unsafe {
13264
0
                (dispatch_table.cmd_draw_indexed_indirect)(
13265
0
                    command_buffer,
13266
0
                    buffer,
13267
0
                    offset,
13268
0
                    draw_count,
13269
0
                    stride,
13270
0
                )
13271
            },
13272
        }
13273
0
    }
13274
0
    extern "system" fn cmd_dispatch(
13275
0
        command_buffer: vk::CommandBuffer,
13276
0
        group_countx: u32,
13277
0
        group_county: u32,
13278
0
        group_countz: u32,
13279
0
    ) {
13280
0
        let global = Self::instance();
13281
0
        // vkCmdDispatch
13282
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13283
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13284
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_dispatch(
13285
0
            command_buffer,
13286
0
            group_countx,
13287
0
            group_county,
13288
0
            group_countz,
13289
0
        );
13290
0
        match layer_result {
13291
0
            LayerResult::Handled(res) => res,
13292
            LayerResult::Unhandled => unsafe {
13293
0
                (dispatch_table.cmd_dispatch)(
13294
0
                    command_buffer,
13295
0
                    group_countx,
13296
0
                    group_county,
13297
0
                    group_countz,
13298
0
                )
13299
            },
13300
        }
13301
0
    }
13302
0
    extern "system" fn cmd_dispatch_indirect(
13303
0
        command_buffer: vk::CommandBuffer,
13304
0
        buffer: vk::Buffer,
13305
0
        offset: vk::DeviceSize,
13306
0
    ) {
13307
0
        let global = Self::instance();
13308
0
        // vkCmdDispatchIndirect
13309
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13310
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13311
0
        let layer_result = device_info
13312
0
            .customized_info
13313
0
            .borrow()
13314
0
            .hooks()
13315
0
            .cmd_dispatch_indirect(command_buffer, buffer, offset);
13316
0
        match layer_result {
13317
0
            LayerResult::Handled(res) => res,
13318
            LayerResult::Unhandled => unsafe {
13319
0
                (dispatch_table.cmd_dispatch_indirect)(command_buffer, buffer, offset)
13320
            },
13321
        }
13322
0
    }
13323
0
    extern "system" fn cmd_copy_buffer(
13324
0
        command_buffer: vk::CommandBuffer,
13325
0
        src_buffer: vk::Buffer,
13326
0
        dst_buffer: vk::Buffer,
13327
0
        region_count: u32,
13328
0
        p_regions: *const vk::BufferCopy,
13329
0
    ) {
13330
0
        let global = Self::instance();
13331
0
        // vkCmdCopyBuffer
13332
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13333
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13334
0
        #[allow(clippy::unnecessary_cast)]
13335
0
        let layer_result = device_info
13336
0
            .customized_info
13337
0
            .borrow()
13338
0
            .hooks()
13339
0
            .cmd_copy_buffer(command_buffer, src_buffer, dst_buffer, unsafe {
13340
0
                std::slice::from_raw_parts(p_regions, region_count as usize)
13341
0
            });
13342
0
        match layer_result {
13343
0
            LayerResult::Handled(res) => res,
13344
            LayerResult::Unhandled => unsafe {
13345
0
                (dispatch_table.cmd_copy_buffer)(
13346
0
                    command_buffer,
13347
0
                    src_buffer,
13348
0
                    dst_buffer,
13349
0
                    region_count,
13350
0
                    p_regions,
13351
0
                )
13352
            },
13353
        }
13354
0
    }
13355
0
    extern "system" fn cmd_copy_image(
13356
0
        command_buffer: vk::CommandBuffer,
13357
0
        src_image: vk::Image,
13358
0
        src_image_layout: vk::ImageLayout,
13359
0
        dst_image: vk::Image,
13360
0
        dst_image_layout: vk::ImageLayout,
13361
0
        region_count: u32,
13362
0
        p_regions: *const vk::ImageCopy,
13363
0
    ) {
13364
0
        let global = Self::instance();
13365
0
        // vkCmdCopyImage
13366
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13367
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13368
0
        #[allow(clippy::unnecessary_cast)]
13369
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_copy_image(
13370
0
            command_buffer,
13371
0
            src_image,
13372
0
            src_image_layout,
13373
0
            dst_image,
13374
0
            dst_image_layout,
13375
0
            unsafe { std::slice::from_raw_parts(p_regions, region_count as usize) },
13376
0
        );
13377
0
        match layer_result {
13378
0
            LayerResult::Handled(res) => res,
13379
            LayerResult::Unhandled => unsafe {
13380
0
                (dispatch_table.cmd_copy_image)(
13381
0
                    command_buffer,
13382
0
                    src_image,
13383
0
                    src_image_layout,
13384
0
                    dst_image,
13385
0
                    dst_image_layout,
13386
0
                    region_count,
13387
0
                    p_regions,
13388
0
                )
13389
            },
13390
        }
13391
0
    }
13392
0
    extern "system" fn cmd_blit_image(
13393
0
        command_buffer: vk::CommandBuffer,
13394
0
        src_image: vk::Image,
13395
0
        src_image_layout: vk::ImageLayout,
13396
0
        dst_image: vk::Image,
13397
0
        dst_image_layout: vk::ImageLayout,
13398
0
        region_count: u32,
13399
0
        p_regions: *const vk::ImageBlit,
13400
0
        filter: vk::Filter,
13401
0
    ) {
13402
0
        let global = Self::instance();
13403
0
        // vkCmdBlitImage
13404
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13405
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13406
0
        #[allow(clippy::unnecessary_cast)]
13407
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_blit_image(
13408
0
            command_buffer,
13409
0
            src_image,
13410
0
            src_image_layout,
13411
0
            dst_image,
13412
0
            dst_image_layout,
13413
0
            unsafe { std::slice::from_raw_parts(p_regions, region_count as usize) },
13414
0
            filter,
13415
0
        );
13416
0
        match layer_result {
13417
0
            LayerResult::Handled(res) => res,
13418
            LayerResult::Unhandled => unsafe {
13419
0
                (dispatch_table.cmd_blit_image)(
13420
0
                    command_buffer,
13421
0
                    src_image,
13422
0
                    src_image_layout,
13423
0
                    dst_image,
13424
0
                    dst_image_layout,
13425
0
                    region_count,
13426
0
                    p_regions,
13427
0
                    filter,
13428
0
                )
13429
            },
13430
        }
13431
0
    }
13432
0
    extern "system" fn cmd_copy_buffer_to_image(
13433
0
        command_buffer: vk::CommandBuffer,
13434
0
        src_buffer: vk::Buffer,
13435
0
        dst_image: vk::Image,
13436
0
        dst_image_layout: vk::ImageLayout,
13437
0
        region_count: u32,
13438
0
        p_regions: *const vk::BufferImageCopy,
13439
0
    ) {
13440
0
        let global = Self::instance();
13441
0
        // vkCmdCopyBufferToImage
13442
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13443
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13444
0
        #[allow(clippy::unnecessary_cast)]
13445
0
        let layer_result = device_info
13446
0
            .customized_info
13447
0
            .borrow()
13448
0
            .hooks()
13449
0
            .cmd_copy_buffer_to_image(
13450
0
                command_buffer,
13451
0
                src_buffer,
13452
0
                dst_image,
13453
0
                dst_image_layout,
13454
0
                unsafe { std::slice::from_raw_parts(p_regions, region_count as usize) },
13455
0
            );
13456
0
        match layer_result {
13457
0
            LayerResult::Handled(res) => res,
13458
            LayerResult::Unhandled => unsafe {
13459
0
                (dispatch_table.cmd_copy_buffer_to_image)(
13460
0
                    command_buffer,
13461
0
                    src_buffer,
13462
0
                    dst_image,
13463
0
                    dst_image_layout,
13464
0
                    region_count,
13465
0
                    p_regions,
13466
0
                )
13467
            },
13468
        }
13469
0
    }
13470
0
    extern "system" fn cmd_copy_image_to_buffer(
13471
0
        command_buffer: vk::CommandBuffer,
13472
0
        src_image: vk::Image,
13473
0
        src_image_layout: vk::ImageLayout,
13474
0
        dst_buffer: vk::Buffer,
13475
0
        region_count: u32,
13476
0
        p_regions: *const vk::BufferImageCopy,
13477
0
    ) {
13478
0
        let global = Self::instance();
13479
0
        // vkCmdCopyImageToBuffer
13480
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13481
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13482
0
        #[allow(clippy::unnecessary_cast)]
13483
0
        let layer_result = device_info
13484
0
            .customized_info
13485
0
            .borrow()
13486
0
            .hooks()
13487
0
            .cmd_copy_image_to_buffer(
13488
0
                command_buffer,
13489
0
                src_image,
13490
0
                src_image_layout,
13491
0
                dst_buffer,
13492
0
                unsafe { std::slice::from_raw_parts(p_regions, region_count as usize) },
13493
0
            );
13494
0
        match layer_result {
13495
0
            LayerResult::Handled(res) => res,
13496
            LayerResult::Unhandled => unsafe {
13497
0
                (dispatch_table.cmd_copy_image_to_buffer)(
13498
0
                    command_buffer,
13499
0
                    src_image,
13500
0
                    src_image_layout,
13501
0
                    dst_buffer,
13502
0
                    region_count,
13503
0
                    p_regions,
13504
0
                )
13505
            },
13506
        }
13507
0
    }
13508
0
    extern "system" fn cmd_update_buffer(
13509
0
        command_buffer: vk::CommandBuffer,
13510
0
        dst_buffer: vk::Buffer,
13511
0
        dst_offset: vk::DeviceSize,
13512
0
        data_size: vk::DeviceSize,
13513
0
        p_data: *const c_void,
13514
0
    ) {
13515
0
        let global = Self::instance();
13516
0
        // vkCmdUpdateBuffer
13517
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13518
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13519
0
        #[allow(clippy::unnecessary_cast)]
13520
0
        let layer_result = device_info
13521
0
            .customized_info
13522
0
            .borrow()
13523
0
            .hooks()
13524
0
            .cmd_update_buffer(command_buffer, dst_buffer, dst_offset, unsafe {
13525
0
                std::slice::from_raw_parts(p_data as *const u8, data_size as usize)
13526
0
            });
13527
0
        match layer_result {
13528
0
            LayerResult::Handled(res) => res,
13529
            LayerResult::Unhandled => unsafe {
13530
0
                (dispatch_table.cmd_update_buffer)(
13531
0
                    command_buffer,
13532
0
                    dst_buffer,
13533
0
                    dst_offset,
13534
0
                    data_size,
13535
0
                    p_data,
13536
0
                )
13537
            },
13538
        }
13539
0
    }
13540
0
    extern "system" fn cmd_fill_buffer(
13541
0
        command_buffer: vk::CommandBuffer,
13542
0
        dst_buffer: vk::Buffer,
13543
0
        dst_offset: vk::DeviceSize,
13544
0
        size: vk::DeviceSize,
13545
0
        data: u32,
13546
0
    ) {
13547
0
        let global = Self::instance();
13548
0
        // vkCmdFillBuffer
13549
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13550
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13551
0
        let layer_result = device_info
13552
0
            .customized_info
13553
0
            .borrow()
13554
0
            .hooks()
13555
0
            .cmd_fill_buffer(command_buffer, dst_buffer, dst_offset, size, data);
13556
0
        match layer_result {
13557
0
            LayerResult::Handled(res) => res,
13558
            LayerResult::Unhandled => unsafe {
13559
0
                (dispatch_table.cmd_fill_buffer)(command_buffer, dst_buffer, dst_offset, size, data)
13560
            },
13561
        }
13562
0
    }
13563
0
    extern "system" fn cmd_clear_color_image(
13564
0
        command_buffer: vk::CommandBuffer,
13565
0
        image: vk::Image,
13566
0
        image_layout: vk::ImageLayout,
13567
0
        p_color: *const vk::ClearColorValue,
13568
0
        range_count: u32,
13569
0
        p_ranges: *const vk::ImageSubresourceRange,
13570
0
    ) {
13571
0
        let global = Self::instance();
13572
0
        // vkCmdClearColorImage
13573
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13574
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13575
0
        #[allow(clippy::unnecessary_cast)]
13576
0
        let layer_result = device_info
13577
0
            .customized_info
13578
0
            .borrow()
13579
0
            .hooks()
13580
0
            .cmd_clear_color_image(
13581
0
                command_buffer,
13582
0
                image,
13583
0
                image_layout,
13584
0
                unsafe { p_color.as_ref() }.unwrap(),
13585
0
                unsafe { std::slice::from_raw_parts(p_ranges, range_count as usize) },
13586
0
            );
13587
0
        match layer_result {
13588
0
            LayerResult::Handled(res) => res,
13589
            LayerResult::Unhandled => unsafe {
13590
0
                (dispatch_table.cmd_clear_color_image)(
13591
0
                    command_buffer,
13592
0
                    image,
13593
0
                    image_layout,
13594
0
                    p_color,
13595
0
                    range_count,
13596
0
                    p_ranges,
13597
0
                )
13598
            },
13599
        }
13600
0
    }
13601
0
    extern "system" fn cmd_clear_depth_stencil_image(
13602
0
        command_buffer: vk::CommandBuffer,
13603
0
        image: vk::Image,
13604
0
        image_layout: vk::ImageLayout,
13605
0
        p_depth_stencil: *const vk::ClearDepthStencilValue,
13606
0
        range_count: u32,
13607
0
        p_ranges: *const vk::ImageSubresourceRange,
13608
0
    ) {
13609
0
        let global = Self::instance();
13610
0
        // vkCmdClearDepthStencilImage
13611
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13612
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13613
0
        #[allow(clippy::unnecessary_cast)]
13614
0
        let layer_result = device_info
13615
0
            .customized_info
13616
0
            .borrow()
13617
0
            .hooks()
13618
0
            .cmd_clear_depth_stencil_image(
13619
0
                command_buffer,
13620
0
                image,
13621
0
                image_layout,
13622
0
                unsafe { p_depth_stencil.as_ref() }.unwrap(),
13623
0
                unsafe { std::slice::from_raw_parts(p_ranges, range_count as usize) },
13624
0
            );
13625
0
        match layer_result {
13626
0
            LayerResult::Handled(res) => res,
13627
            LayerResult::Unhandled => unsafe {
13628
0
                (dispatch_table.cmd_clear_depth_stencil_image)(
13629
0
                    command_buffer,
13630
0
                    image,
13631
0
                    image_layout,
13632
0
                    p_depth_stencil,
13633
0
                    range_count,
13634
0
                    p_ranges,
13635
0
                )
13636
            },
13637
        }
13638
0
    }
13639
0
    extern "system" fn cmd_clear_attachments(
13640
0
        command_buffer: vk::CommandBuffer,
13641
0
        attachment_count: u32,
13642
0
        p_attachments: *const vk::ClearAttachment,
13643
0
        rect_count: u32,
13644
0
        p_rects: *const vk::ClearRect,
13645
0
    ) {
13646
0
        let global = Self::instance();
13647
0
        // vkCmdClearAttachments
13648
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13649
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13650
0
        #[allow(clippy::unnecessary_cast)]
13651
0
        #[allow(clippy::unnecessary_cast)]
13652
0
        let layer_result = device_info
13653
0
            .customized_info
13654
0
            .borrow()
13655
0
            .hooks()
13656
0
            .cmd_clear_attachments(
13657
0
                command_buffer,
13658
0
                unsafe { std::slice::from_raw_parts(p_attachments, attachment_count as usize) },
13659
0
                unsafe { std::slice::from_raw_parts(p_rects, rect_count as usize) },
13660
0
            );
13661
0
        match layer_result {
13662
0
            LayerResult::Handled(res) => res,
13663
            LayerResult::Unhandled => unsafe {
13664
0
                (dispatch_table.cmd_clear_attachments)(
13665
0
                    command_buffer,
13666
0
                    attachment_count,
13667
0
                    p_attachments,
13668
0
                    rect_count,
13669
0
                    p_rects,
13670
0
                )
13671
            },
13672
        }
13673
0
    }
13674
0
    extern "system" fn cmd_resolve_image(
13675
0
        command_buffer: vk::CommandBuffer,
13676
0
        src_image: vk::Image,
13677
0
        src_image_layout: vk::ImageLayout,
13678
0
        dst_image: vk::Image,
13679
0
        dst_image_layout: vk::ImageLayout,
13680
0
        region_count: u32,
13681
0
        p_regions: *const vk::ImageResolve,
13682
0
    ) {
13683
0
        let global = Self::instance();
13684
0
        // vkCmdResolveImage
13685
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13686
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13687
0
        #[allow(clippy::unnecessary_cast)]
13688
0
        let layer_result = device_info
13689
0
            .customized_info
13690
0
            .borrow()
13691
0
            .hooks()
13692
0
            .cmd_resolve_image(
13693
0
                command_buffer,
13694
0
                src_image,
13695
0
                src_image_layout,
13696
0
                dst_image,
13697
0
                dst_image_layout,
13698
0
                unsafe { std::slice::from_raw_parts(p_regions, region_count as usize) },
13699
0
            );
13700
0
        match layer_result {
13701
0
            LayerResult::Handled(res) => res,
13702
            LayerResult::Unhandled => unsafe {
13703
0
                (dispatch_table.cmd_resolve_image)(
13704
0
                    command_buffer,
13705
0
                    src_image,
13706
0
                    src_image_layout,
13707
0
                    dst_image,
13708
0
                    dst_image_layout,
13709
0
                    region_count,
13710
0
                    p_regions,
13711
0
                )
13712
            },
13713
        }
13714
0
    }
13715
0
    extern "system" fn cmd_set_event(
13716
0
        command_buffer: vk::CommandBuffer,
13717
0
        event: vk::Event,
13718
0
        stage_mask: vk::PipelineStageFlags,
13719
0
    ) {
13720
0
        let global = Self::instance();
13721
0
        // vkCmdSetEvent
13722
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13723
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13724
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event(
13725
0
            command_buffer,
13726
0
            event,
13727
0
            stage_mask,
13728
0
        );
13729
0
        match layer_result {
13730
0
            LayerResult::Handled(res) => res,
13731
            LayerResult::Unhandled => unsafe {
13732
0
                (dispatch_table.cmd_set_event)(command_buffer, event, stage_mask)
13733
            },
13734
        }
13735
0
    }
13736
0
    extern "system" fn cmd_reset_event(
13737
0
        command_buffer: vk::CommandBuffer,
13738
0
        event: vk::Event,
13739
0
        stage_mask: vk::PipelineStageFlags,
13740
0
    ) {
13741
0
        let global = Self::instance();
13742
0
        // vkCmdResetEvent
13743
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13744
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13745
0
        let layer_result = device_info
13746
0
            .customized_info
13747
0
            .borrow()
13748
0
            .hooks()
13749
0
            .cmd_reset_event(command_buffer, event, stage_mask);
13750
0
        match layer_result {
13751
0
            LayerResult::Handled(res) => res,
13752
            LayerResult::Unhandled => unsafe {
13753
0
                (dispatch_table.cmd_reset_event)(command_buffer, event, stage_mask)
13754
            },
13755
        }
13756
0
    }
13757
0
    extern "system" fn cmd_wait_events(
13758
0
        command_buffer: vk::CommandBuffer,
13759
0
        event_count: u32,
13760
0
        p_events: *const vk::Event,
13761
0
        src_stage_mask: vk::PipelineStageFlags,
13762
0
        dst_stage_mask: vk::PipelineStageFlags,
13763
0
        memory_barrier_count: u32,
13764
0
        p_memory_barriers: *const vk::MemoryBarrier,
13765
0
        buffer_memory_barrier_count: u32,
13766
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13767
0
        image_memory_barrier_count: u32,
13768
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13769
0
    ) {
13770
0
        let global = Self::instance();
13771
0
        // vkCmdWaitEvents
13772
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13773
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13774
0
        #[allow(clippy::unnecessary_cast)]
13775
0
        #[allow(clippy::unnecessary_cast)]
13776
0
        #[allow(clippy::unnecessary_cast)]
13777
0
        #[allow(clippy::unnecessary_cast)]
13778
0
        let layer_result = device_info
13779
0
            .customized_info
13780
0
            .borrow()
13781
0
            .hooks()
13782
0
            .cmd_wait_events(
13783
0
                command_buffer,
13784
0
                unsafe { std::slice::from_raw_parts(p_events, event_count as usize) },
13785
0
                src_stage_mask,
13786
0
                dst_stage_mask,
13787
0
                unsafe {
13788
0
                    std::slice::from_raw_parts(p_memory_barriers, memory_barrier_count as usize)
13789
0
                },
13790
0
                unsafe {
13791
0
                    std::slice::from_raw_parts(
13792
0
                        p_buffer_memory_barriers,
13793
0
                        buffer_memory_barrier_count as usize,
13794
0
                    )
13795
0
                },
13796
0
                unsafe {
13797
0
                    std::slice::from_raw_parts(
13798
0
                        p_image_memory_barriers,
13799
0
                        image_memory_barrier_count as usize,
13800
0
                    )
13801
0
                },
13802
0
            );
13803
0
        match layer_result {
13804
0
            LayerResult::Handled(res) => res,
13805
            LayerResult::Unhandled => unsafe {
13806
0
                (dispatch_table.cmd_wait_events)(
13807
0
                    command_buffer,
13808
0
                    event_count,
13809
0
                    p_events,
13810
0
                    src_stage_mask,
13811
0
                    dst_stage_mask,
13812
0
                    memory_barrier_count,
13813
0
                    p_memory_barriers,
13814
0
                    buffer_memory_barrier_count,
13815
0
                    p_buffer_memory_barriers,
13816
0
                    image_memory_barrier_count,
13817
0
                    p_image_memory_barriers,
13818
0
                )
13819
            },
13820
        }
13821
0
    }
13822
0
    extern "system" fn cmd_pipeline_barrier(
13823
0
        command_buffer: vk::CommandBuffer,
13824
0
        src_stage_mask: vk::PipelineStageFlags,
13825
0
        dst_stage_mask: vk::PipelineStageFlags,
13826
0
        dependency_flags: vk::DependencyFlags,
13827
0
        memory_barrier_count: u32,
13828
0
        p_memory_barriers: *const vk::MemoryBarrier,
13829
0
        buffer_memory_barrier_count: u32,
13830
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13831
0
        image_memory_barrier_count: u32,
13832
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13833
0
    ) {
13834
0
        let global = Self::instance();
13835
0
        // vkCmdPipelineBarrier
13836
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13837
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13838
0
        #[allow(clippy::unnecessary_cast)]
13839
0
        #[allow(clippy::unnecessary_cast)]
13840
0
        #[allow(clippy::unnecessary_cast)]
13841
0
        let layer_result = device_info
13842
0
            .customized_info
13843
0
            .borrow()
13844
0
            .hooks()
13845
0
            .cmd_pipeline_barrier(
13846
0
                command_buffer,
13847
0
                src_stage_mask,
13848
0
                dst_stage_mask,
13849
0
                dependency_flags,
13850
0
                unsafe {
13851
0
                    std::slice::from_raw_parts(p_memory_barriers, memory_barrier_count as usize)
13852
0
                },
13853
0
                unsafe {
13854
0
                    std::slice::from_raw_parts(
13855
0
                        p_buffer_memory_barriers,
13856
0
                        buffer_memory_barrier_count as usize,
13857
0
                    )
13858
0
                },
13859
0
                unsafe {
13860
0
                    std::slice::from_raw_parts(
13861
0
                        p_image_memory_barriers,
13862
0
                        image_memory_barrier_count as usize,
13863
0
                    )
13864
0
                },
13865
0
            );
13866
0
        match layer_result {
13867
0
            LayerResult::Handled(res) => res,
13868
            LayerResult::Unhandled => unsafe {
13869
0
                (dispatch_table.cmd_pipeline_barrier)(
13870
0
                    command_buffer,
13871
0
                    src_stage_mask,
13872
0
                    dst_stage_mask,
13873
0
                    dependency_flags,
13874
0
                    memory_barrier_count,
13875
0
                    p_memory_barriers,
13876
0
                    buffer_memory_barrier_count,
13877
0
                    p_buffer_memory_barriers,
13878
0
                    image_memory_barrier_count,
13879
0
                    p_image_memory_barriers,
13880
0
                )
13881
            },
13882
        }
13883
0
    }
13884
0
    extern "system" fn cmd_begin_query(
13885
0
        command_buffer: vk::CommandBuffer,
13886
0
        query_pool: vk::QueryPool,
13887
0
        query: u32,
13888
0
        flags: vk::QueryControlFlags,
13889
0
    ) {
13890
0
        let global = Self::instance();
13891
0
        // vkCmdBeginQuery
13892
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13893
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13894
0
        let layer_result = device_info
13895
0
            .customized_info
13896
0
            .borrow()
13897
0
            .hooks()
13898
0
            .cmd_begin_query(command_buffer, query_pool, query, flags);
13899
0
        match layer_result {
13900
0
            LayerResult::Handled(res) => res,
13901
            LayerResult::Unhandled => unsafe {
13902
0
                (dispatch_table.cmd_begin_query)(command_buffer, query_pool, query, flags)
13903
            },
13904
        }
13905
0
    }
13906
0
    extern "system" fn cmd_end_query(
13907
0
        command_buffer: vk::CommandBuffer,
13908
0
        query_pool: vk::QueryPool,
13909
0
        query: u32,
13910
0
    ) {
13911
0
        let global = Self::instance();
13912
0
        // vkCmdEndQuery
13913
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13914
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13915
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_end_query(
13916
0
            command_buffer,
13917
0
            query_pool,
13918
0
            query,
13919
0
        );
13920
0
        match layer_result {
13921
0
            LayerResult::Handled(res) => res,
13922
            LayerResult::Unhandled => unsafe {
13923
0
                (dispatch_table.cmd_end_query)(command_buffer, query_pool, query)
13924
            },
13925
        }
13926
0
    }
13927
0
    extern "system" fn cmd_reset_query_pool(
13928
0
        command_buffer: vk::CommandBuffer,
13929
0
        query_pool: vk::QueryPool,
13930
0
        first_query: u32,
13931
0
        query_count: u32,
13932
0
    ) {
13933
0
        let global = Self::instance();
13934
0
        // vkCmdResetQueryPool
13935
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13936
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13937
0
        let layer_result = device_info
13938
0
            .customized_info
13939
0
            .borrow()
13940
0
            .hooks()
13941
0
            .cmd_reset_query_pool(command_buffer, query_pool, first_query, query_count);
13942
0
        match layer_result {
13943
0
            LayerResult::Handled(res) => res,
13944
            LayerResult::Unhandled => unsafe {
13945
0
                (dispatch_table.cmd_reset_query_pool)(
13946
0
                    command_buffer,
13947
0
                    query_pool,
13948
0
                    first_query,
13949
0
                    query_count,
13950
0
                )
13951
            },
13952
        }
13953
0
    }
13954
0
    extern "system" fn cmd_write_timestamp(
13955
0
        command_buffer: vk::CommandBuffer,
13956
0
        pipeline_stage: vk::PipelineStageFlags,
13957
0
        query_pool: vk::QueryPool,
13958
0
        query: u32,
13959
0
    ) {
13960
0
        let global = Self::instance();
13961
0
        // vkCmdWriteTimestamp
13962
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13963
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13964
0
        let layer_result = device_info
13965
0
            .customized_info
13966
0
            .borrow()
13967
0
            .hooks()
13968
0
            .cmd_write_timestamp(command_buffer, pipeline_stage, query_pool, query);
13969
0
        match layer_result {
13970
0
            LayerResult::Handled(res) => res,
13971
            LayerResult::Unhandled => unsafe {
13972
0
                (dispatch_table.cmd_write_timestamp)(
13973
0
                    command_buffer,
13974
0
                    pipeline_stage,
13975
0
                    query_pool,
13976
0
                    query,
13977
0
                )
13978
            },
13979
        }
13980
0
    }
13981
0
    extern "system" fn cmd_copy_query_pool_results(
13982
0
        command_buffer: vk::CommandBuffer,
13983
0
        query_pool: vk::QueryPool,
13984
0
        first_query: u32,
13985
0
        query_count: u32,
13986
0
        dst_buffer: vk::Buffer,
13987
0
        dst_offset: vk::DeviceSize,
13988
0
        stride: vk::DeviceSize,
13989
0
        flags: vk::QueryResultFlags,
13990
0
    ) {
13991
0
        let global = Self::instance();
13992
0
        // vkCmdCopyQueryPoolResults
13993
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13994
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13995
0
        let layer_result = device_info
13996
0
            .customized_info
13997
0
            .borrow()
13998
0
            .hooks()
13999
0
            .cmd_copy_query_pool_results(
14000
0
                command_buffer,
14001
0
                query_pool,
14002
0
                first_query,
14003
0
                query_count,
14004
0
                dst_buffer,
14005
0
                dst_offset,
14006
0
                stride,
14007
0
                flags,
14008
0
            );
14009
0
        match layer_result {
14010
0
            LayerResult::Handled(res) => res,
14011
            LayerResult::Unhandled => unsafe {
14012
0
                (dispatch_table.cmd_copy_query_pool_results)(
14013
0
                    command_buffer,
14014
0
                    query_pool,
14015
0
                    first_query,
14016
0
                    query_count,
14017
0
                    dst_buffer,
14018
0
                    dst_offset,
14019
0
                    stride,
14020
0
                    flags,
14021
0
                )
14022
            },
14023
        }
14024
0
    }
14025
0
    extern "system" fn cmd_push_constants(
14026
0
        command_buffer: vk::CommandBuffer,
14027
0
        layout: vk::PipelineLayout,
14028
0
        stage_flags: vk::ShaderStageFlags,
14029
0
        offset: u32,
14030
0
        size: u32,
14031
0
        p_values: *const c_void,
14032
0
    ) {
14033
0
        let global = Self::instance();
14034
0
        // vkCmdPushConstants
14035
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14036
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
14037
0
        #[allow(clippy::unnecessary_cast)]
14038
0
        let layer_result = device_info
14039
0
            .customized_info
14040
0
            .borrow()
14041
0
            .hooks()
14042
0
            .cmd_push_constants(command_buffer, layout, stage_flags, offset, unsafe {
14043
0
                std::slice::from_raw_parts(p_values as *const u8, size as usize)
14044
0
            });
14045
0
        match layer_result {
14046
0
            LayerResult::Handled(res) => res,
14047
            LayerResult::Unhandled => unsafe {
14048
0
                (dispatch_table.cmd_push_constants)(
14049
0
                    command_buffer,
14050
0
                    layout,
14051
0
                    stage_flags,
14052
0
                    offset,
14053
0
                    size,
14054
0
                    p_values,
14055
0
                )
14056
            },
14057
        }
14058
0
    }
14059
0
    extern "system" fn cmd_begin_render_pass(
14060
0
        command_buffer: vk::CommandBuffer,
14061
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
14062
0
        contents: vk::SubpassContents,
14063
0
    ) {
14064
0
        let global = Self::instance();
14065
0
        // vkCmdBeginRenderPass
14066
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14067
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
14068
0
        let layer_result = device_info
14069
0
            .customized_info
14070
0
            .borrow()
14071
0
            .hooks()
14072
0
            .cmd_begin_render_pass(
14073
0
                command_buffer,
14074
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
14075
0
                contents,
14076
0
            );
14077
0
        match layer_result {
14078
0
            LayerResult::Handled(res) => res,
14079
            LayerResult::Unhandled => unsafe {
14080
0
                (dispatch_table.cmd_begin_render_pass)(
14081
0
                    command_buffer,
14082
0
                    p_render_pass_begin,
14083
0
                    contents,
14084
0
                )
14085
            },
14086
        }
14087
0
    }
14088
0
    extern "system" fn cmd_next_subpass(
14089
0
        command_buffer: vk::CommandBuffer,
14090
0
        contents: vk::SubpassContents,
14091
0
    ) {
14092
0
        let global = Self::instance();
14093
0
        // vkCmdNextSubpass
14094
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14095
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
14096
0
        let layer_result = device_info
14097
0
            .customized_info
14098
0
            .borrow()
14099
0
            .hooks()
14100
0
            .cmd_next_subpass(command_buffer, contents);
14101
0
        match layer_result {
14102
0
            LayerResult::Handled(res) => res,
14103
            LayerResult::Unhandled => unsafe {
14104
0
                (dispatch_table.cmd_next_subpass)(command_buffer, contents)
14105
            },
14106
        }
14107
0
    }
14108
0
    extern "system" fn cmd_end_render_pass(command_buffer: vk::CommandBuffer) {
14109
0
        let global = Self::instance();
14110
0
        // vkCmdEndRenderPass
14111
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14112
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
14113
0
        let layer_result = device_info
14114
0
            .customized_info
14115
0
            .borrow()
14116
0
            .hooks()
14117
0
            .cmd_end_render_pass(command_buffer);
14118
0
        match layer_result {
14119
0
            LayerResult::Handled(res) => res,
14120
            LayerResult::Unhandled => unsafe {
14121
0
                (dispatch_table.cmd_end_render_pass)(command_buffer)
14122
            },
14123
        }
14124
0
    }
14125
0
    extern "system" fn cmd_execute_commands(
14126
0
        command_buffer: vk::CommandBuffer,
14127
0
        command_buffer_count: u32,
14128
0
        p_command_buffers: *const vk::CommandBuffer,
14129
0
    ) {
14130
0
        let global = Self::instance();
14131
0
        // vkCmdExecuteCommands
14132
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14133
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
14134
0
        #[allow(clippy::unnecessary_cast)]
14135
0
        let layer_result = device_info
14136
0
            .customized_info
14137
0
            .borrow()
14138
0
            .hooks()
14139
0
            .cmd_execute_commands(command_buffer, unsafe {
14140
0
                std::slice::from_raw_parts(p_command_buffers, command_buffer_count as usize)
14141
0
            });
14142
0
        match layer_result {
14143
0
            LayerResult::Handled(res) => res,
14144
            LayerResult::Unhandled => unsafe {
14145
0
                (dispatch_table.cmd_execute_commands)(
14146
0
                    command_buffer,
14147
0
                    command_buffer_count,
14148
0
                    p_command_buffers,
14149
0
                )
14150
            },
14151
        }
14152
0
    }
14153
0
    extern "system" fn bind_buffer_memory2(
14154
0
        device: vk::Device,
14155
0
        bind_info_count: u32,
14156
0
        p_bind_infos: *const vk::BindBufferMemoryInfo,
14157
0
    ) -> vk::Result {
14158
0
        let global = Self::instance();
14159
0
        // vkBindBufferMemory2
14160
0
        let device_info = global.get_device_info(device).unwrap();
14161
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14162
0
        #[allow(clippy::unnecessary_cast)]
14163
0
        let layer_result = device_info
14164
0
            .customized_info
14165
0
            .borrow()
14166
0
            .hooks()
14167
0
            .bind_buffer_memory2(unsafe {
14168
0
                std::slice::from_raw_parts(p_bind_infos, bind_info_count as usize)
14169
0
            });
14170
0
        match layer_result {
14171
0
            LayerResult::Handled(res) => match res {
14172
0
                Ok(()) => vk::Result::SUCCESS,
14173
0
                Err(e) => e,
14174
            },
14175
            LayerResult::Unhandled => unsafe {
14176
0
                (dispatch_table.bind_buffer_memory2)(device, bind_info_count, p_bind_infos)
14177
            },
14178
        }
14179
0
    }
14180
0
    extern "system" fn bind_image_memory2(
14181
0
        device: vk::Device,
14182
0
        bind_info_count: u32,
14183
0
        p_bind_infos: *const vk::BindImageMemoryInfo,
14184
0
    ) -> vk::Result {
14185
0
        let global = Self::instance();
14186
0
        // vkBindImageMemory2
14187
0
        let device_info = global.get_device_info(device).unwrap();
14188
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14189
0
        #[allow(clippy::unnecessary_cast)]
14190
0
        let layer_result = device_info
14191
0
            .customized_info
14192
0
            .borrow()
14193
0
            .hooks()
14194
0
            .bind_image_memory2(unsafe {
14195
0
                std::slice::from_raw_parts(p_bind_infos, bind_info_count as usize)
14196
0
            });
14197
0
        match layer_result {
14198
0
            LayerResult::Handled(res) => match res {
14199
0
                Ok(()) => vk::Result::SUCCESS,
14200
0
                Err(e) => e,
14201
            },
14202
            LayerResult::Unhandled => unsafe {
14203
0
                (dispatch_table.bind_image_memory2)(device, bind_info_count, p_bind_infos)
14204
            },
14205
        }
14206
0
    }
14207
0
    extern "system" fn get_device_group_peer_memory_features(
14208
0
        device: vk::Device,
14209
0
        heap_index: u32,
14210
0
        local_device_index: u32,
14211
0
        remote_device_index: u32,
14212
0
        p_peer_memory_features: *mut vk::PeerMemoryFeatureFlags,
14213
0
    ) {
14214
0
        let global = Self::instance();
14215
0
        // vkGetDeviceGroupPeerMemoryFeatures
14216
0
        let device_info = global.get_device_info(device).unwrap();
14217
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14218
0
        let layer_result = device_info
14219
0
            .customized_info
14220
0
            .borrow()
14221
0
            .hooks()
14222
0
            .get_device_group_peer_memory_features(
14223
0
                heap_index,
14224
0
                local_device_index,
14225
0
                remote_device_index,
14226
0
            );
14227
0
        match layer_result {
14228
0
            LayerResult::Handled(res) => {
14229
0
                *unsafe { p_peer_memory_features.as_mut() }.unwrap() = res;
14230
0
            }
14231
            LayerResult::Unhandled => unsafe {
14232
0
                (dispatch_table.get_device_group_peer_memory_features)(
14233
0
                    device,
14234
0
                    heap_index,
14235
0
                    local_device_index,
14236
0
                    remote_device_index,
14237
0
                    p_peer_memory_features,
14238
0
                )
14239
            },
14240
        }
14241
0
    }
14242
0
    extern "system" fn cmd_set_device_mask(command_buffer: vk::CommandBuffer, device_mask: u32) {
14243
0
        let global = Self::instance();
14244
0
        // vkCmdSetDeviceMask
14245
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14246
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14247
0
        let layer_result = device_info
14248
0
            .customized_info
14249
0
            .borrow()
14250
0
            .hooks()
14251
0
            .cmd_set_device_mask(command_buffer, device_mask);
14252
0
        match layer_result {
14253
0
            LayerResult::Handled(res) => res,
14254
            LayerResult::Unhandled => unsafe {
14255
0
                (dispatch_table.cmd_set_device_mask)(command_buffer, device_mask)
14256
            },
14257
        }
14258
0
    }
14259
0
    extern "system" fn cmd_dispatch_base(
14260
0
        command_buffer: vk::CommandBuffer,
14261
0
        base_groupx: u32,
14262
0
        base_groupy: u32,
14263
0
        base_groupz: u32,
14264
0
        group_countx: u32,
14265
0
        group_county: u32,
14266
0
        group_countz: u32,
14267
0
    ) {
14268
0
        let global = Self::instance();
14269
0
        // vkCmdDispatchBase
14270
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14271
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14272
0
        let layer_result = device_info
14273
0
            .customized_info
14274
0
            .borrow()
14275
0
            .hooks()
14276
0
            .cmd_dispatch_base(
14277
0
                command_buffer,
14278
0
                base_groupx,
14279
0
                base_groupy,
14280
0
                base_groupz,
14281
0
                group_countx,
14282
0
                group_county,
14283
0
                group_countz,
14284
0
            );
14285
0
        match layer_result {
14286
0
            LayerResult::Handled(res) => res,
14287
            LayerResult::Unhandled => unsafe {
14288
0
                (dispatch_table.cmd_dispatch_base)(
14289
0
                    command_buffer,
14290
0
                    base_groupx,
14291
0
                    base_groupy,
14292
0
                    base_groupz,
14293
0
                    group_countx,
14294
0
                    group_county,
14295
0
                    group_countz,
14296
0
                )
14297
            },
14298
        }
14299
0
    }
14300
0
    extern "system" fn get_image_memory_requirements2(
14301
0
        device: vk::Device,
14302
0
        p_info: *const vk::ImageMemoryRequirementsInfo2,
14303
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14304
0
    ) {
14305
0
        let global = Self::instance();
14306
0
        // vkGetImageMemoryRequirements2
14307
0
        let device_info = global.get_device_info(device).unwrap();
14308
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14309
0
        let layer_result = device_info
14310
0
            .customized_info
14311
0
            .borrow()
14312
0
            .hooks()
14313
0
            .get_image_memory_requirements2(
14314
0
                unsafe { p_info.as_ref() }.unwrap(),
14315
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
14316
0
            );
14317
0
        match layer_result {
14318
0
            LayerResult::Handled(res) => res,
14319
            LayerResult::Unhandled => unsafe {
14320
0
                (dispatch_table.get_image_memory_requirements2)(
14321
0
                    device,
14322
0
                    p_info,
14323
0
                    p_memory_requirements,
14324
0
                )
14325
            },
14326
        }
14327
0
    }
14328
0
    extern "system" fn get_buffer_memory_requirements2(
14329
0
        device: vk::Device,
14330
0
        p_info: *const vk::BufferMemoryRequirementsInfo2,
14331
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14332
0
    ) {
14333
0
        let global = Self::instance();
14334
0
        // vkGetBufferMemoryRequirements2
14335
0
        let device_info = global.get_device_info(device).unwrap();
14336
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14337
0
        let layer_result = device_info
14338
0
            .customized_info
14339
0
            .borrow()
14340
0
            .hooks()
14341
0
            .get_buffer_memory_requirements2(
14342
0
                unsafe { p_info.as_ref() }.unwrap(),
14343
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
14344
0
            );
14345
0
        match layer_result {
14346
0
            LayerResult::Handled(res) => res,
14347
            LayerResult::Unhandled => unsafe {
14348
0
                (dispatch_table.get_buffer_memory_requirements2)(
14349
0
                    device,
14350
0
                    p_info,
14351
0
                    p_memory_requirements,
14352
0
                )
14353
            },
14354
        }
14355
0
    }
14356
0
    extern "system" fn get_image_sparse_memory_requirements2(
14357
0
        device: vk::Device,
14358
0
        p_info: *const vk::ImageSparseMemoryRequirementsInfo2,
14359
0
        p_sparse_memory_requirement_count: *mut u32,
14360
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
14361
0
    ) {
14362
0
        let global = Self::instance();
14363
0
        // vkGetImageSparseMemoryRequirements2
14364
0
        let device_info = global.get_device_info(device).unwrap();
14365
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14366
        #[allow(clippy::unnecessary_cast)]
14367
0
        let layer_result = device_info
14368
0
            .customized_info
14369
0
            .borrow()
14370
0
            .hooks()
14371
0
            .get_image_sparse_memory_requirements2(
14372
0
                unsafe { p_info.as_ref() }.unwrap(),
14373
0
                if p_sparse_memory_requirements.is_null() {
14374
0
                    None
14375
                } else {
14376
0
                    Some(unsafe {
14377
0
                        std::slice::from_raw_parts_mut(
14378
0
                            p_sparse_memory_requirements,
14379
0
                            *unsafe { p_sparse_memory_requirement_count.as_ref() }.unwrap()
14380
0
                                as usize,
14381
0
                        )
14382
0
                    })
14383
                },
14384
            );
14385
0
        match layer_result {
14386
0
            LayerResult::Handled(res) => res,
14387
            LayerResult::Unhandled => unsafe {
14388
0
                (dispatch_table.get_image_sparse_memory_requirements2)(
14389
0
                    device,
14390
0
                    p_info,
14391
0
                    p_sparse_memory_requirement_count,
14392
0
                    p_sparse_memory_requirements,
14393
0
                )
14394
            },
14395
        }
14396
0
    }
14397
0
    extern "system" fn trim_command_pool(
14398
0
        device: vk::Device,
14399
0
        command_pool: vk::CommandPool,
14400
0
        flags: vk::CommandPoolTrimFlags,
14401
0
    ) {
14402
0
        let global = Self::instance();
14403
0
        // vkTrimCommandPool
14404
0
        let device_info = global.get_device_info(device).unwrap();
14405
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14406
0
        let layer_result = device_info
14407
0
            .customized_info
14408
0
            .borrow()
14409
0
            .hooks()
14410
0
            .trim_command_pool(command_pool, flags);
14411
0
        match layer_result {
14412
0
            LayerResult::Handled(res) => res,
14413
            LayerResult::Unhandled => unsafe {
14414
0
                (dispatch_table.trim_command_pool)(device, command_pool, flags)
14415
            },
14416
        }
14417
0
    }
14418
0
    extern "system" fn get_device_queue2(
14419
0
        device: vk::Device,
14420
0
        p_queue_info: *const vk::DeviceQueueInfo2,
14421
0
        p_queue: *mut vk::Queue,
14422
0
    ) {
14423
0
        let global = Self::instance();
14424
0
        // vkGetDeviceQueue2
14425
0
        let device_info = global.get_device_info(device).unwrap();
14426
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14427
0
        let layer_result = device_info
14428
0
            .customized_info
14429
0
            .borrow()
14430
0
            .hooks()
14431
0
            .get_device_queue2(unsafe { p_queue_info.as_ref() }.unwrap());
14432
0
        match layer_result {
14433
0
            LayerResult::Handled(res) => {
14434
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
14435
0
            }
14436
            LayerResult::Unhandled => unsafe {
14437
0
                (dispatch_table.get_device_queue2)(device, p_queue_info, p_queue)
14438
            },
14439
        }
14440
0
    }
14441
0
    extern "system" fn create_sampler_ycbcr_conversion(
14442
0
        device: vk::Device,
14443
0
        p_create_info: *const vk::SamplerYcbcrConversionCreateInfo,
14444
0
        p_allocator: *const vk::AllocationCallbacks,
14445
0
        p_ycbcr_conversion: *mut vk::SamplerYcbcrConversion,
14446
0
    ) -> vk::Result {
14447
0
        let global = Self::instance();
14448
0
        // vkCreateSamplerYcbcrConversion
14449
0
        let device_info = global.get_device_info(device).unwrap();
14450
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14451
0
        let layer_result = device_info
14452
0
            .customized_info
14453
0
            .borrow()
14454
0
            .hooks()
14455
0
            .create_sampler_ycbcr_conversion(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14456
0
                p_allocator.as_ref()
14457
0
            });
14458
0
        match layer_result {
14459
0
            LayerResult::Handled(res) => match res {
14460
0
                Ok(res) => {
14461
0
                    *unsafe { p_ycbcr_conversion.as_mut() }.unwrap() = res;
14462
0
                    vk::Result::SUCCESS
14463
                }
14464
0
                Err(e) => e,
14465
            },
14466
            LayerResult::Unhandled => unsafe {
14467
0
                (dispatch_table.create_sampler_ycbcr_conversion)(
14468
0
                    device,
14469
0
                    p_create_info,
14470
0
                    p_allocator,
14471
0
                    p_ycbcr_conversion,
14472
0
                )
14473
            },
14474
        }
14475
0
    }
14476
1
    extern "system" fn destroy_sampler_ycbcr_conversion(
14477
1
        device: vk::Device,
14478
1
        ycbcr_conversion: vk::SamplerYcbcrConversion,
14479
1
        p_allocator: *const vk::AllocationCallbacks,
14480
1
    ) {
14481
1
        let global = Self::instance();
14482
1
        // vkDestroySamplerYcbcrConversion
14483
1
        let device_info = global.get_device_info(device).unwrap();
14484
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14485
1
        let layer_result = device_info
14486
1
            .customized_info
14487
1
            .borrow()
14488
1
            .hooks()
14489
1
            .destroy_sampler_ycbcr_conversion(ycbcr_conversion, unsafe { p_allocator.as_ref() });
14490
1
        match layer_result {
14491
0
            LayerResult::Handled(res) => res,
14492
            LayerResult::Unhandled => unsafe {
14493
1
                (dispatch_table.destroy_sampler_ycbcr_conversion)(
14494
1
                    device,
14495
1
                    ycbcr_conversion,
14496
1
                    p_allocator,
14497
1
                )
14498
            },
14499
        }
14500
1
    }
14501
0
    extern "system" fn create_descriptor_update_template(
14502
0
        device: vk::Device,
14503
0
        p_create_info: *const vk::DescriptorUpdateTemplateCreateInfo,
14504
0
        p_allocator: *const vk::AllocationCallbacks,
14505
0
        p_descriptor_update_template: *mut vk::DescriptorUpdateTemplate,
14506
0
    ) -> vk::Result {
14507
0
        let global = Self::instance();
14508
0
        // vkCreateDescriptorUpdateTemplate
14509
0
        let device_info = global.get_device_info(device).unwrap();
14510
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14511
0
        let layer_result = device_info
14512
0
            .customized_info
14513
0
            .borrow()
14514
0
            .hooks()
14515
0
            .create_descriptor_update_template(
14516
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14517
0
                unsafe { p_allocator.as_ref() },
14518
0
            );
14519
0
        match layer_result {
14520
0
            LayerResult::Handled(res) => match res {
14521
0
                Ok(res) => {
14522
0
                    *unsafe { p_descriptor_update_template.as_mut() }.unwrap() = res;
14523
0
                    vk::Result::SUCCESS
14524
                }
14525
0
                Err(e) => e,
14526
            },
14527
            LayerResult::Unhandled => unsafe {
14528
0
                (dispatch_table.create_descriptor_update_template)(
14529
0
                    device,
14530
0
                    p_create_info,
14531
0
                    p_allocator,
14532
0
                    p_descriptor_update_template,
14533
0
                )
14534
            },
14535
        }
14536
0
    }
14537
0
    extern "system" fn destroy_descriptor_update_template(
14538
0
        device: vk::Device,
14539
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14540
0
        p_allocator: *const vk::AllocationCallbacks,
14541
0
    ) {
14542
0
        let global = Self::instance();
14543
0
        // vkDestroyDescriptorUpdateTemplate
14544
0
        let device_info = global.get_device_info(device).unwrap();
14545
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14546
0
        let layer_result = device_info
14547
0
            .customized_info
14548
0
            .borrow()
14549
0
            .hooks()
14550
0
            .destroy_descriptor_update_template(descriptor_update_template, unsafe {
14551
0
                p_allocator.as_ref()
14552
0
            });
14553
0
        match layer_result {
14554
0
            LayerResult::Handled(res) => res,
14555
            LayerResult::Unhandled => unsafe {
14556
0
                (dispatch_table.destroy_descriptor_update_template)(
14557
0
                    device,
14558
0
                    descriptor_update_template,
14559
0
                    p_allocator,
14560
0
                )
14561
            },
14562
        }
14563
0
    }
14564
0
    extern "system" fn update_descriptor_set_with_template(
14565
0
        device: vk::Device,
14566
0
        descriptor_set: vk::DescriptorSet,
14567
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14568
0
        p_data: *const c_void,
14569
0
    ) {
14570
0
        let global = Self::instance();
14571
0
        // vkUpdateDescriptorSetWithTemplate
14572
0
        let device_info = global.get_device_info(device).unwrap();
14573
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14574
0
        let layer_result = device_info
14575
0
            .customized_info
14576
0
            .borrow()
14577
0
            .hooks()
14578
0
            .update_descriptor_set_with_template(
14579
0
                descriptor_set,
14580
0
                descriptor_update_template,
14581
0
                unsafe { p_data.as_ref() }.unwrap(),
14582
0
            );
14583
0
        match layer_result {
14584
0
            LayerResult::Handled(res) => res,
14585
            LayerResult::Unhandled => unsafe {
14586
0
                (dispatch_table.update_descriptor_set_with_template)(
14587
0
                    device,
14588
0
                    descriptor_set,
14589
0
                    descriptor_update_template,
14590
0
                    p_data,
14591
0
                )
14592
            },
14593
        }
14594
0
    }
14595
0
    extern "system" fn get_descriptor_set_layout_support(
14596
0
        device: vk::Device,
14597
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
14598
0
        p_support: *mut vk::DescriptorSetLayoutSupport,
14599
0
    ) {
14600
0
        let global = Self::instance();
14601
0
        // vkGetDescriptorSetLayoutSupport
14602
0
        let device_info = global.get_device_info(device).unwrap();
14603
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14604
0
        let layer_result = device_info
14605
0
            .customized_info
14606
0
            .borrow()
14607
0
            .hooks()
14608
0
            .get_descriptor_set_layout_support(
14609
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14610
0
                unsafe { p_support.as_mut() }.unwrap(),
14611
0
            );
14612
0
        match layer_result {
14613
0
            LayerResult::Handled(res) => res,
14614
            LayerResult::Unhandled => unsafe {
14615
0
                (dispatch_table.get_descriptor_set_layout_support)(device, p_create_info, p_support)
14616
            },
14617
        }
14618
0
    }
14619
0
    extern "system" fn cmd_draw_indirect_count(
14620
0
        command_buffer: vk::CommandBuffer,
14621
0
        buffer: vk::Buffer,
14622
0
        offset: vk::DeviceSize,
14623
0
        count_buffer: vk::Buffer,
14624
0
        count_buffer_offset: vk::DeviceSize,
14625
0
        max_draw_count: u32,
14626
0
        stride: u32,
14627
0
    ) {
14628
0
        let global = Self::instance();
14629
0
        // vkCmdDrawIndirectCount
14630
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14631
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14632
0
        let layer_result = device_info
14633
0
            .customized_info
14634
0
            .borrow()
14635
0
            .hooks()
14636
0
            .cmd_draw_indirect_count(
14637
0
                command_buffer,
14638
0
                buffer,
14639
0
                offset,
14640
0
                count_buffer,
14641
0
                count_buffer_offset,
14642
0
                max_draw_count,
14643
0
                stride,
14644
0
            );
14645
0
        match layer_result {
14646
0
            LayerResult::Handled(res) => res,
14647
            LayerResult::Unhandled => unsafe {
14648
0
                (dispatch_table.cmd_draw_indirect_count)(
14649
0
                    command_buffer,
14650
0
                    buffer,
14651
0
                    offset,
14652
0
                    count_buffer,
14653
0
                    count_buffer_offset,
14654
0
                    max_draw_count,
14655
0
                    stride,
14656
0
                )
14657
            },
14658
        }
14659
0
    }
14660
0
    extern "system" fn cmd_draw_indexed_indirect_count(
14661
0
        command_buffer: vk::CommandBuffer,
14662
0
        buffer: vk::Buffer,
14663
0
        offset: vk::DeviceSize,
14664
0
        count_buffer: vk::Buffer,
14665
0
        count_buffer_offset: vk::DeviceSize,
14666
0
        max_draw_count: u32,
14667
0
        stride: u32,
14668
0
    ) {
14669
0
        let global = Self::instance();
14670
0
        // vkCmdDrawIndexedIndirectCount
14671
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14672
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14673
0
        let layer_result = device_info
14674
0
            .customized_info
14675
0
            .borrow()
14676
0
            .hooks()
14677
0
            .cmd_draw_indexed_indirect_count(
14678
0
                command_buffer,
14679
0
                buffer,
14680
0
                offset,
14681
0
                count_buffer,
14682
0
                count_buffer_offset,
14683
0
                max_draw_count,
14684
0
                stride,
14685
0
            );
14686
0
        match layer_result {
14687
0
            LayerResult::Handled(res) => res,
14688
            LayerResult::Unhandled => unsafe {
14689
0
                (dispatch_table.cmd_draw_indexed_indirect_count)(
14690
0
                    command_buffer,
14691
0
                    buffer,
14692
0
                    offset,
14693
0
                    count_buffer,
14694
0
                    count_buffer_offset,
14695
0
                    max_draw_count,
14696
0
                    stride,
14697
0
                )
14698
            },
14699
        }
14700
0
    }
14701
0
    extern "system" fn create_render_pass2(
14702
0
        device: vk::Device,
14703
0
        p_create_info: *const vk::RenderPassCreateInfo2,
14704
0
        p_allocator: *const vk::AllocationCallbacks,
14705
0
        p_render_pass: *mut vk::RenderPass,
14706
0
    ) -> vk::Result {
14707
0
        let global = Self::instance();
14708
0
        // vkCreateRenderPass2
14709
0
        let device_info = global.get_device_info(device).unwrap();
14710
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14711
0
        let layer_result = device_info
14712
0
            .customized_info
14713
0
            .borrow()
14714
0
            .hooks()
14715
0
            .create_render_pass2(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14716
0
                p_allocator.as_ref()
14717
0
            });
14718
0
        match layer_result {
14719
0
            LayerResult::Handled(res) => match res {
14720
0
                Ok(res) => {
14721
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
14722
0
                    vk::Result::SUCCESS
14723
                }
14724
0
                Err(e) => e,
14725
            },
14726
            LayerResult::Unhandled => unsafe {
14727
0
                (dispatch_table.create_render_pass2)(
14728
0
                    device,
14729
0
                    p_create_info,
14730
0
                    p_allocator,
14731
0
                    p_render_pass,
14732
0
                )
14733
            },
14734
        }
14735
0
    }
14736
0
    extern "system" fn cmd_begin_render_pass2(
14737
0
        command_buffer: vk::CommandBuffer,
14738
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
14739
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14740
0
    ) {
14741
0
        let global = Self::instance();
14742
0
        // vkCmdBeginRenderPass2
14743
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14744
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14745
0
        let layer_result = device_info
14746
0
            .customized_info
14747
0
            .borrow()
14748
0
            .hooks()
14749
0
            .cmd_begin_render_pass2(
14750
0
                command_buffer,
14751
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
14752
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14753
0
            );
14754
0
        match layer_result {
14755
0
            LayerResult::Handled(res) => res,
14756
            LayerResult::Unhandled => unsafe {
14757
0
                (dispatch_table.cmd_begin_render_pass2)(
14758
0
                    command_buffer,
14759
0
                    p_render_pass_begin,
14760
0
                    p_subpass_begin_info,
14761
0
                )
14762
            },
14763
        }
14764
0
    }
14765
0
    extern "system" fn cmd_next_subpass2(
14766
0
        command_buffer: vk::CommandBuffer,
14767
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14768
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14769
0
    ) {
14770
0
        let global = Self::instance();
14771
0
        // vkCmdNextSubpass2
14772
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14773
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14774
0
        let layer_result = device_info
14775
0
            .customized_info
14776
0
            .borrow()
14777
0
            .hooks()
14778
0
            .cmd_next_subpass2(
14779
0
                command_buffer,
14780
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14781
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14782
0
            );
14783
0
        match layer_result {
14784
0
            LayerResult::Handled(res) => res,
14785
            LayerResult::Unhandled => unsafe {
14786
0
                (dispatch_table.cmd_next_subpass2)(
14787
0
                    command_buffer,
14788
0
                    p_subpass_begin_info,
14789
0
                    p_subpass_end_info,
14790
0
                )
14791
            },
14792
        }
14793
0
    }
14794
0
    extern "system" fn cmd_end_render_pass2(
14795
0
        command_buffer: vk::CommandBuffer,
14796
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14797
0
    ) {
14798
0
        let global = Self::instance();
14799
0
        // vkCmdEndRenderPass2
14800
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14801
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14802
0
        let layer_result = device_info
14803
0
            .customized_info
14804
0
            .borrow()
14805
0
            .hooks()
14806
0
            .cmd_end_render_pass2(
14807
0
                command_buffer,
14808
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14809
0
            );
14810
0
        match layer_result {
14811
0
            LayerResult::Handled(res) => res,
14812
            LayerResult::Unhandled => unsafe {
14813
0
                (dispatch_table.cmd_end_render_pass2)(command_buffer, p_subpass_end_info)
14814
            },
14815
        }
14816
0
    }
14817
0
    extern "system" fn reset_query_pool(
14818
0
        device: vk::Device,
14819
0
        query_pool: vk::QueryPool,
14820
0
        first_query: u32,
14821
0
        query_count: u32,
14822
0
    ) {
14823
0
        let global = Self::instance();
14824
0
        // vkResetQueryPool
14825
0
        let device_info = global.get_device_info(device).unwrap();
14826
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14827
0
        let layer_result = device_info
14828
0
            .customized_info
14829
0
            .borrow()
14830
0
            .hooks()
14831
0
            .reset_query_pool(query_pool, first_query, query_count);
14832
0
        match layer_result {
14833
0
            LayerResult::Handled(res) => res,
14834
            LayerResult::Unhandled => unsafe {
14835
0
                (dispatch_table.reset_query_pool)(device, query_pool, first_query, query_count)
14836
            },
14837
        }
14838
0
    }
14839
0
    extern "system" fn get_semaphore_counter_value(
14840
0
        device: vk::Device,
14841
0
        semaphore: vk::Semaphore,
14842
0
        p_value: *mut u64,
14843
0
    ) -> vk::Result {
14844
0
        let global = Self::instance();
14845
0
        // vkGetSemaphoreCounterValue
14846
0
        let device_info = global.get_device_info(device).unwrap();
14847
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14848
0
        let layer_result = device_info
14849
0
            .customized_info
14850
0
            .borrow()
14851
0
            .hooks()
14852
0
            .get_semaphore_counter_value(semaphore);
14853
0
        match layer_result {
14854
0
            LayerResult::Handled(res) => match res {
14855
0
                Ok(res) => {
14856
0
                    *unsafe { p_value.as_mut() }.unwrap() = res;
14857
0
                    vk::Result::SUCCESS
14858
                }
14859
0
                Err(e) => e,
14860
            },
14861
            LayerResult::Unhandled => unsafe {
14862
0
                (dispatch_table.get_semaphore_counter_value)(device, semaphore, p_value)
14863
            },
14864
        }
14865
0
    }
14866
0
    extern "system" fn wait_semaphores(
14867
0
        device: vk::Device,
14868
0
        p_wait_info: *const vk::SemaphoreWaitInfo,
14869
0
        timeout: u64,
14870
0
    ) -> vk::Result {
14871
0
        let global = Self::instance();
14872
0
        // vkWaitSemaphores
14873
0
        let device_info = global.get_device_info(device).unwrap();
14874
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14875
0
        let layer_result = device_info
14876
0
            .customized_info
14877
0
            .borrow()
14878
0
            .hooks()
14879
0
            .wait_semaphores(unsafe { p_wait_info.as_ref() }.unwrap(), timeout);
14880
0
        match layer_result {
14881
0
            LayerResult::Handled(res) => match res {
14882
0
                Ok(()) => vk::Result::SUCCESS,
14883
0
                Err(e) => e,
14884
            },
14885
            LayerResult::Unhandled => unsafe {
14886
0
                (dispatch_table.wait_semaphores)(device, p_wait_info, timeout)
14887
            },
14888
        }
14889
0
    }
14890
0
    extern "system" fn signal_semaphore(
14891
0
        device: vk::Device,
14892
0
        p_signal_info: *const vk::SemaphoreSignalInfo,
14893
0
    ) -> vk::Result {
14894
0
        let global = Self::instance();
14895
0
        // vkSignalSemaphore
14896
0
        let device_info = global.get_device_info(device).unwrap();
14897
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14898
0
        let layer_result = device_info
14899
0
            .customized_info
14900
0
            .borrow()
14901
0
            .hooks()
14902
0
            .signal_semaphore(unsafe { p_signal_info.as_ref() }.unwrap());
14903
0
        match layer_result {
14904
0
            LayerResult::Handled(res) => match res {
14905
0
                Ok(()) => vk::Result::SUCCESS,
14906
0
                Err(e) => e,
14907
            },
14908
            LayerResult::Unhandled => unsafe {
14909
0
                (dispatch_table.signal_semaphore)(device, p_signal_info)
14910
            },
14911
        }
14912
0
    }
14913
0
    extern "system" fn get_buffer_device_address(
14914
0
        device: vk::Device,
14915
0
        p_info: *const vk::BufferDeviceAddressInfo,
14916
0
    ) -> vk::DeviceAddress {
14917
0
        let global = Self::instance();
14918
0
        // vkGetBufferDeviceAddress
14919
0
        let device_info = global.get_device_info(device).unwrap();
14920
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14921
0
        let layer_result = device_info
14922
0
            .customized_info
14923
0
            .borrow()
14924
0
            .hooks()
14925
0
            .get_buffer_device_address(unsafe { p_info.as_ref() }.unwrap());
14926
0
        match layer_result {
14927
0
            LayerResult::Handled(res) => res,
14928
            LayerResult::Unhandled => unsafe {
14929
0
                (dispatch_table.get_buffer_device_address)(device, p_info)
14930
            },
14931
        }
14932
0
    }
14933
0
    extern "system" fn get_buffer_opaque_capture_address(
14934
0
        device: vk::Device,
14935
0
        p_info: *const vk::BufferDeviceAddressInfo,
14936
0
    ) -> u64 {
14937
0
        let global = Self::instance();
14938
0
        // vkGetBufferOpaqueCaptureAddress
14939
0
        let device_info = global.get_device_info(device).unwrap();
14940
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14941
0
        let layer_result = device_info
14942
0
            .customized_info
14943
0
            .borrow()
14944
0
            .hooks()
14945
0
            .get_buffer_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14946
0
        match layer_result {
14947
0
            LayerResult::Handled(res) => res,
14948
            LayerResult::Unhandled => unsafe {
14949
0
                (dispatch_table.get_buffer_opaque_capture_address)(device, p_info)
14950
            },
14951
        }
14952
0
    }
14953
0
    extern "system" fn get_device_memory_opaque_capture_address(
14954
0
        device: vk::Device,
14955
0
        p_info: *const vk::DeviceMemoryOpaqueCaptureAddressInfo,
14956
0
    ) -> u64 {
14957
0
        let global = Self::instance();
14958
0
        // vkGetDeviceMemoryOpaqueCaptureAddress
14959
0
        let device_info = global.get_device_info(device).unwrap();
14960
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14961
0
        let layer_result = device_info
14962
0
            .customized_info
14963
0
            .borrow()
14964
0
            .hooks()
14965
0
            .get_device_memory_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14966
0
        match layer_result {
14967
0
            LayerResult::Handled(res) => res,
14968
            LayerResult::Unhandled => unsafe {
14969
0
                (dispatch_table.get_device_memory_opaque_capture_address)(device, p_info)
14970
            },
14971
        }
14972
0
    }
14973
0
    extern "system" fn create_private_data_slot(
14974
0
        device: vk::Device,
14975
0
        p_create_info: *const vk::PrivateDataSlotCreateInfo,
14976
0
        p_allocator: *const vk::AllocationCallbacks,
14977
0
        p_private_data_slot: *mut vk::PrivateDataSlot,
14978
0
    ) -> vk::Result {
14979
0
        let global = Self::instance();
14980
0
        // vkCreatePrivateDataSlot
14981
0
        let device_info = global.get_device_info(device).unwrap();
14982
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14983
0
        let layer_result = device_info
14984
0
            .customized_info
14985
0
            .borrow()
14986
0
            .hooks()
14987
0
            .create_private_data_slot(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14988
0
                p_allocator.as_ref()
14989
0
            });
14990
0
        match layer_result {
14991
0
            LayerResult::Handled(res) => match res {
14992
0
                Ok(res) => {
14993
0
                    *unsafe { p_private_data_slot.as_mut() }.unwrap() = res;
14994
0
                    vk::Result::SUCCESS
14995
                }
14996
0
                Err(e) => e,
14997
            },
14998
            LayerResult::Unhandled => unsafe {
14999
0
                (dispatch_table.create_private_data_slot)(
15000
0
                    device,
15001
0
                    p_create_info,
15002
0
                    p_allocator,
15003
0
                    p_private_data_slot,
15004
0
                )
15005
            },
15006
        }
15007
0
    }
15008
0
    extern "system" fn destroy_private_data_slot(
15009
0
        device: vk::Device,
15010
0
        private_data_slot: vk::PrivateDataSlot,
15011
0
        p_allocator: *const vk::AllocationCallbacks,
15012
0
    ) {
15013
0
        let global = Self::instance();
15014
0
        // vkDestroyPrivateDataSlot
15015
0
        let device_info = global.get_device_info(device).unwrap();
15016
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15017
0
        let layer_result = device_info
15018
0
            .customized_info
15019
0
            .borrow()
15020
0
            .hooks()
15021
0
            .destroy_private_data_slot(private_data_slot, unsafe { p_allocator.as_ref() });
15022
0
        match layer_result {
15023
0
            LayerResult::Handled(res) => res,
15024
            LayerResult::Unhandled => unsafe {
15025
0
                (dispatch_table.destroy_private_data_slot)(device, private_data_slot, p_allocator)
15026
            },
15027
        }
15028
0
    }
15029
0
    extern "system" fn set_private_data(
15030
0
        device: vk::Device,
15031
0
        object_type: vk::ObjectType,
15032
0
        object_handle: u64,
15033
0
        private_data_slot: vk::PrivateDataSlot,
15034
0
        data: u64,
15035
0
    ) -> vk::Result {
15036
0
        let global = Self::instance();
15037
0
        // vkSetPrivateData
15038
0
        let device_info = global.get_device_info(device).unwrap();
15039
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15040
0
        let layer_result = device_info
15041
0
            .customized_info
15042
0
            .borrow()
15043
0
            .hooks()
15044
0
            .set_private_data(object_type, object_handle, private_data_slot, data);
15045
0
        match layer_result {
15046
0
            LayerResult::Handled(res) => match res {
15047
0
                Ok(()) => vk::Result::SUCCESS,
15048
0
                Err(e) => e,
15049
            },
15050
            LayerResult::Unhandled => unsafe {
15051
0
                (dispatch_table.set_private_data)(
15052
0
                    device,
15053
0
                    object_type,
15054
0
                    object_handle,
15055
0
                    private_data_slot,
15056
0
                    data,
15057
0
                )
15058
            },
15059
        }
15060
0
    }
15061
0
    extern "system" fn get_private_data(
15062
0
        device: vk::Device,
15063
0
        object_type: vk::ObjectType,
15064
0
        object_handle: u64,
15065
0
        private_data_slot: vk::PrivateDataSlot,
15066
0
        p_data: *mut u64,
15067
0
    ) {
15068
0
        let global = Self::instance();
15069
0
        // vkGetPrivateData
15070
0
        let device_info = global.get_device_info(device).unwrap();
15071
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15072
0
        let layer_result = device_info
15073
0
            .customized_info
15074
0
            .borrow()
15075
0
            .hooks()
15076
0
            .get_private_data(object_type, object_handle, private_data_slot);
15077
0
        match layer_result {
15078
0
            LayerResult::Handled(res) => {
15079
0
                *unsafe { p_data.as_mut() }.unwrap() = res;
15080
0
            }
15081
            LayerResult::Unhandled => unsafe {
15082
0
                (dispatch_table.get_private_data)(
15083
0
                    device,
15084
0
                    object_type,
15085
0
                    object_handle,
15086
0
                    private_data_slot,
15087
0
                    p_data,
15088
0
                )
15089
            },
15090
        }
15091
0
    }
15092
0
    extern "system" fn cmd_set_event2(
15093
0
        command_buffer: vk::CommandBuffer,
15094
0
        event: vk::Event,
15095
0
        p_dependency_info: *const vk::DependencyInfo,
15096
0
    ) {
15097
0
        let global = Self::instance();
15098
0
        // vkCmdSetEvent2
15099
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15100
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15101
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event2(
15102
0
            command_buffer,
15103
0
            event,
15104
0
            unsafe { p_dependency_info.as_ref() }.unwrap(),
15105
0
        );
15106
0
        match layer_result {
15107
0
            LayerResult::Handled(res) => res,
15108
            LayerResult::Unhandled => unsafe {
15109
0
                (dispatch_table.cmd_set_event2)(command_buffer, event, p_dependency_info)
15110
            },
15111
        }
15112
0
    }
15113
0
    extern "system" fn cmd_reset_event2(
15114
0
        command_buffer: vk::CommandBuffer,
15115
0
        event: vk::Event,
15116
0
        stage_mask: vk::PipelineStageFlags2,
15117
0
    ) {
15118
0
        let global = Self::instance();
15119
0
        // vkCmdResetEvent2
15120
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15121
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15122
0
        let layer_result = device_info
15123
0
            .customized_info
15124
0
            .borrow()
15125
0
            .hooks()
15126
0
            .cmd_reset_event2(command_buffer, event, stage_mask);
15127
0
        match layer_result {
15128
0
            LayerResult::Handled(res) => res,
15129
            LayerResult::Unhandled => unsafe {
15130
0
                (dispatch_table.cmd_reset_event2)(command_buffer, event, stage_mask)
15131
            },
15132
        }
15133
0
    }
15134
0
    extern "system" fn cmd_wait_events2(
15135
0
        command_buffer: vk::CommandBuffer,
15136
0
        event_count: u32,
15137
0
        p_events: *const vk::Event,
15138
0
        p_dependency_infos: *const vk::DependencyInfo,
15139
0
    ) {
15140
0
        let global = Self::instance();
15141
0
        // vkCmdWaitEvents2
15142
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15143
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15144
0
        #[allow(clippy::unnecessary_cast)]
15145
0
        #[allow(clippy::unnecessary_cast)]
15146
0
        let layer_result = device_info
15147
0
            .customized_info
15148
0
            .borrow()
15149
0
            .hooks()
15150
0
            .cmd_wait_events2(
15151
0
                command_buffer,
15152
0
                unsafe { std::slice::from_raw_parts(p_events, event_count as usize) },
15153
0
                unsafe { std::slice::from_raw_parts(p_dependency_infos, event_count as usize) },
15154
0
            );
15155
0
        match layer_result {
15156
0
            LayerResult::Handled(res) => res,
15157
            LayerResult::Unhandled => unsafe {
15158
0
                (dispatch_table.cmd_wait_events2)(
15159
0
                    command_buffer,
15160
0
                    event_count,
15161
0
                    p_events,
15162
0
                    p_dependency_infos,
15163
0
                )
15164
            },
15165
        }
15166
0
    }
15167
0
    extern "system" fn cmd_pipeline_barrier2(
15168
0
        command_buffer: vk::CommandBuffer,
15169
0
        p_dependency_info: *const vk::DependencyInfo,
15170
0
    ) {
15171
0
        let global = Self::instance();
15172
0
        // vkCmdPipelineBarrier2
15173
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15174
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15175
0
        let layer_result = device_info
15176
0
            .customized_info
15177
0
            .borrow()
15178
0
            .hooks()
15179
0
            .cmd_pipeline_barrier2(
15180
0
                command_buffer,
15181
0
                unsafe { p_dependency_info.as_ref() }.unwrap(),
15182
0
            );
15183
0
        match layer_result {
15184
0
            LayerResult::Handled(res) => res,
15185
            LayerResult::Unhandled => unsafe {
15186
0
                (dispatch_table.cmd_pipeline_barrier2)(command_buffer, p_dependency_info)
15187
            },
15188
        }
15189
0
    }
15190
0
    extern "system" fn cmd_write_timestamp2(
15191
0
        command_buffer: vk::CommandBuffer,
15192
0
        stage: vk::PipelineStageFlags2,
15193
0
        query_pool: vk::QueryPool,
15194
0
        query: u32,
15195
0
    ) {
15196
0
        let global = Self::instance();
15197
0
        // vkCmdWriteTimestamp2
15198
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15199
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15200
0
        let layer_result = device_info
15201
0
            .customized_info
15202
0
            .borrow()
15203
0
            .hooks()
15204
0
            .cmd_write_timestamp2(command_buffer, stage, query_pool, query);
15205
0
        match layer_result {
15206
0
            LayerResult::Handled(res) => res,
15207
            LayerResult::Unhandled => unsafe {
15208
0
                (dispatch_table.cmd_write_timestamp2)(command_buffer, stage, query_pool, query)
15209
            },
15210
        }
15211
0
    }
15212
0
    extern "system" fn queue_submit2(
15213
0
        queue: vk::Queue,
15214
0
        submit_count: u32,
15215
0
        p_submits: *const vk::SubmitInfo2,
15216
0
        fence: vk::Fence,
15217
0
    ) -> vk::Result {
15218
0
        let global = Self::instance();
15219
0
        // vkQueueSubmit2
15220
0
        let device_info = global.get_device_info(queue).unwrap();
15221
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15222
0
        #[allow(clippy::unnecessary_cast)]
15223
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit2(
15224
0
            queue,
15225
0
            unsafe { std::slice::from_raw_parts(p_submits, submit_count as usize) },
15226
0
            fence,
15227
0
        );
15228
0
        match layer_result {
15229
0
            LayerResult::Handled(res) => match res {
15230
0
                Ok(()) => vk::Result::SUCCESS,
15231
0
                Err(e) => e,
15232
            },
15233
            LayerResult::Unhandled => unsafe {
15234
0
                (dispatch_table.queue_submit2)(queue, submit_count, p_submits, fence)
15235
            },
15236
        }
15237
0
    }
15238
0
    extern "system" fn cmd_copy_buffer2(
15239
0
        command_buffer: vk::CommandBuffer,
15240
0
        p_copy_buffer_info: *const vk::CopyBufferInfo2,
15241
0
    ) {
15242
0
        let global = Self::instance();
15243
0
        // vkCmdCopyBuffer2
15244
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15245
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15246
0
        let layer_result = device_info
15247
0
            .customized_info
15248
0
            .borrow()
15249
0
            .hooks()
15250
0
            .cmd_copy_buffer2(
15251
0
                command_buffer,
15252
0
                unsafe { p_copy_buffer_info.as_ref() }.unwrap(),
15253
0
            );
15254
0
        match layer_result {
15255
0
            LayerResult::Handled(res) => res,
15256
            LayerResult::Unhandled => unsafe {
15257
0
                (dispatch_table.cmd_copy_buffer2)(command_buffer, p_copy_buffer_info)
15258
            },
15259
        }
15260
0
    }
15261
0
    extern "system" fn cmd_copy_image2(
15262
0
        command_buffer: vk::CommandBuffer,
15263
0
        p_copy_image_info: *const vk::CopyImageInfo2,
15264
0
    ) {
15265
0
        let global = Self::instance();
15266
0
        // vkCmdCopyImage2
15267
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15268
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15269
0
        let layer_result = device_info
15270
0
            .customized_info
15271
0
            .borrow()
15272
0
            .hooks()
15273
0
            .cmd_copy_image2(
15274
0
                command_buffer,
15275
0
                unsafe { p_copy_image_info.as_ref() }.unwrap(),
15276
0
            );
15277
0
        match layer_result {
15278
0
            LayerResult::Handled(res) => res,
15279
            LayerResult::Unhandled => unsafe {
15280
0
                (dispatch_table.cmd_copy_image2)(command_buffer, p_copy_image_info)
15281
            },
15282
        }
15283
0
    }
15284
0
    extern "system" fn cmd_copy_buffer_to_image2(
15285
0
        command_buffer: vk::CommandBuffer,
15286
0
        p_copy_buffer_to_image_info: *const vk::CopyBufferToImageInfo2,
15287
0
    ) {
15288
0
        let global = Self::instance();
15289
0
        // vkCmdCopyBufferToImage2
15290
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15291
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15292
0
        let layer_result = device_info
15293
0
            .customized_info
15294
0
            .borrow()
15295
0
            .hooks()
15296
0
            .cmd_copy_buffer_to_image2(
15297
0
                command_buffer,
15298
0
                unsafe { p_copy_buffer_to_image_info.as_ref() }.unwrap(),
15299
0
            );
15300
0
        match layer_result {
15301
0
            LayerResult::Handled(res) => res,
15302
            LayerResult::Unhandled => unsafe {
15303
0
                (dispatch_table.cmd_copy_buffer_to_image2)(
15304
0
                    command_buffer,
15305
0
                    p_copy_buffer_to_image_info,
15306
0
                )
15307
            },
15308
        }
15309
0
    }
15310
0
    extern "system" fn cmd_copy_image_to_buffer2(
15311
0
        command_buffer: vk::CommandBuffer,
15312
0
        p_copy_image_to_buffer_info: *const vk::CopyImageToBufferInfo2,
15313
0
    ) {
15314
0
        let global = Self::instance();
15315
0
        // vkCmdCopyImageToBuffer2
15316
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15317
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15318
0
        let layer_result = device_info
15319
0
            .customized_info
15320
0
            .borrow()
15321
0
            .hooks()
15322
0
            .cmd_copy_image_to_buffer2(
15323
0
                command_buffer,
15324
0
                unsafe { p_copy_image_to_buffer_info.as_ref() }.unwrap(),
15325
0
            );
15326
0
        match layer_result {
15327
0
            LayerResult::Handled(res) => res,
15328
            LayerResult::Unhandled => unsafe {
15329
0
                (dispatch_table.cmd_copy_image_to_buffer2)(
15330
0
                    command_buffer,
15331
0
                    p_copy_image_to_buffer_info,
15332
0
                )
15333
            },
15334
        }
15335
0
    }
15336
0
    extern "system" fn cmd_blit_image2(
15337
0
        command_buffer: vk::CommandBuffer,
15338
0
        p_blit_image_info: *const vk::BlitImageInfo2,
15339
0
    ) {
15340
0
        let global = Self::instance();
15341
0
        // vkCmdBlitImage2
15342
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15343
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15344
0
        let layer_result = device_info
15345
0
            .customized_info
15346
0
            .borrow()
15347
0
            .hooks()
15348
0
            .cmd_blit_image2(
15349
0
                command_buffer,
15350
0
                unsafe { p_blit_image_info.as_ref() }.unwrap(),
15351
0
            );
15352
0
        match layer_result {
15353
0
            LayerResult::Handled(res) => res,
15354
            LayerResult::Unhandled => unsafe {
15355
0
                (dispatch_table.cmd_blit_image2)(command_buffer, p_blit_image_info)
15356
            },
15357
        }
15358
0
    }
15359
0
    extern "system" fn cmd_resolve_image2(
15360
0
        command_buffer: vk::CommandBuffer,
15361
0
        p_resolve_image_info: *const vk::ResolveImageInfo2,
15362
0
    ) {
15363
0
        let global = Self::instance();
15364
0
        // vkCmdResolveImage2
15365
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15366
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15367
0
        let layer_result = device_info
15368
0
            .customized_info
15369
0
            .borrow()
15370
0
            .hooks()
15371
0
            .cmd_resolve_image2(
15372
0
                command_buffer,
15373
0
                unsafe { p_resolve_image_info.as_ref() }.unwrap(),
15374
0
            );
15375
0
        match layer_result {
15376
0
            LayerResult::Handled(res) => res,
15377
            LayerResult::Unhandled => unsafe {
15378
0
                (dispatch_table.cmd_resolve_image2)(command_buffer, p_resolve_image_info)
15379
            },
15380
        }
15381
0
    }
15382
0
    extern "system" fn cmd_begin_rendering(
15383
0
        command_buffer: vk::CommandBuffer,
15384
0
        p_rendering_info: *const vk::RenderingInfo,
15385
0
    ) {
15386
0
        let global = Self::instance();
15387
0
        // vkCmdBeginRendering
15388
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15389
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15390
0
        let layer_result = device_info
15391
0
            .customized_info
15392
0
            .borrow()
15393
0
            .hooks()
15394
0
            .cmd_begin_rendering(
15395
0
                command_buffer,
15396
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
15397
0
            );
15398
0
        match layer_result {
15399
0
            LayerResult::Handled(res) => res,
15400
            LayerResult::Unhandled => unsafe {
15401
0
                (dispatch_table.cmd_begin_rendering)(command_buffer, p_rendering_info)
15402
            },
15403
        }
15404
0
    }
15405
0
    extern "system" fn cmd_end_rendering(command_buffer: vk::CommandBuffer) {
15406
0
        let global = Self::instance();
15407
0
        // vkCmdEndRendering
15408
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15409
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15410
0
        let layer_result = device_info
15411
0
            .customized_info
15412
0
            .borrow()
15413
0
            .hooks()
15414
0
            .cmd_end_rendering(command_buffer);
15415
0
        match layer_result {
15416
0
            LayerResult::Handled(res) => res,
15417
0
            LayerResult::Unhandled => unsafe { (dispatch_table.cmd_end_rendering)(command_buffer) },
15418
        }
15419
0
    }
15420
0
    extern "system" fn cmd_set_cull_mode(
15421
0
        command_buffer: vk::CommandBuffer,
15422
0
        cull_mode: vk::CullModeFlags,
15423
0
    ) {
15424
0
        let global = Self::instance();
15425
0
        // vkCmdSetCullMode
15426
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15427
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15428
0
        let layer_result = device_info
15429
0
            .customized_info
15430
0
            .borrow()
15431
0
            .hooks()
15432
0
            .cmd_set_cull_mode(command_buffer, cull_mode);
15433
0
        match layer_result {
15434
0
            LayerResult::Handled(res) => res,
15435
            LayerResult::Unhandled => unsafe {
15436
0
                (dispatch_table.cmd_set_cull_mode)(command_buffer, cull_mode)
15437
            },
15438
        }
15439
0
    }
15440
0
    extern "system" fn cmd_set_front_face(
15441
0
        command_buffer: vk::CommandBuffer,
15442
0
        front_face: vk::FrontFace,
15443
0
    ) {
15444
0
        let global = Self::instance();
15445
0
        // vkCmdSetFrontFace
15446
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15447
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15448
0
        let layer_result = device_info
15449
0
            .customized_info
15450
0
            .borrow()
15451
0
            .hooks()
15452
0
            .cmd_set_front_face(command_buffer, front_face);
15453
0
        match layer_result {
15454
0
            LayerResult::Handled(res) => res,
15455
            LayerResult::Unhandled => unsafe {
15456
0
                (dispatch_table.cmd_set_front_face)(command_buffer, front_face)
15457
            },
15458
        }
15459
0
    }
15460
0
    extern "system" fn cmd_set_primitive_topology(
15461
0
        command_buffer: vk::CommandBuffer,
15462
0
        primitive_topology: vk::PrimitiveTopology,
15463
0
    ) {
15464
0
        let global = Self::instance();
15465
0
        // vkCmdSetPrimitiveTopology
15466
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15467
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15468
0
        let layer_result = device_info
15469
0
            .customized_info
15470
0
            .borrow()
15471
0
            .hooks()
15472
0
            .cmd_set_primitive_topology(command_buffer, primitive_topology);
15473
0
        match layer_result {
15474
0
            LayerResult::Handled(res) => res,
15475
            LayerResult::Unhandled => unsafe {
15476
0
                (dispatch_table.cmd_set_primitive_topology)(command_buffer, primitive_topology)
15477
            },
15478
        }
15479
0
    }
15480
0
    extern "system" fn cmd_set_viewport_with_count(
15481
0
        command_buffer: vk::CommandBuffer,
15482
0
        viewport_count: u32,
15483
0
        p_viewports: *const vk::Viewport,
15484
0
    ) {
15485
0
        let global = Self::instance();
15486
0
        // vkCmdSetViewportWithCount
15487
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15488
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15489
0
        #[allow(clippy::unnecessary_cast)]
15490
0
        let layer_result = device_info
15491
0
            .customized_info
15492
0
            .borrow()
15493
0
            .hooks()
15494
0
            .cmd_set_viewport_with_count(command_buffer, unsafe {
15495
0
                std::slice::from_raw_parts(p_viewports, viewport_count as usize)
15496
0
            });
15497
0
        match layer_result {
15498
0
            LayerResult::Handled(res) => res,
15499
            LayerResult::Unhandled => unsafe {
15500
0
                (dispatch_table.cmd_set_viewport_with_count)(
15501
0
                    command_buffer,
15502
0
                    viewport_count,
15503
0
                    p_viewports,
15504
0
                )
15505
            },
15506
        }
15507
0
    }
15508
0
    extern "system" fn cmd_set_scissor_with_count(
15509
0
        command_buffer: vk::CommandBuffer,
15510
0
        scissor_count: u32,
15511
0
        p_scissors: *const vk::Rect2D,
15512
0
    ) {
15513
0
        let global = Self::instance();
15514
0
        // vkCmdSetScissorWithCount
15515
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15516
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15517
0
        #[allow(clippy::unnecessary_cast)]
15518
0
        let layer_result = device_info
15519
0
            .customized_info
15520
0
            .borrow()
15521
0
            .hooks()
15522
0
            .cmd_set_scissor_with_count(command_buffer, unsafe {
15523
0
                std::slice::from_raw_parts(p_scissors, scissor_count as usize)
15524
0
            });
15525
0
        match layer_result {
15526
0
            LayerResult::Handled(res) => res,
15527
            LayerResult::Unhandled => unsafe {
15528
0
                (dispatch_table.cmd_set_scissor_with_count)(
15529
0
                    command_buffer,
15530
0
                    scissor_count,
15531
0
                    p_scissors,
15532
0
                )
15533
            },
15534
        }
15535
0
    }
15536
0
    extern "system" fn cmd_bind_vertex_buffers2(
15537
0
        command_buffer: vk::CommandBuffer,
15538
0
        first_binding: u32,
15539
0
        binding_count: u32,
15540
0
        p_buffers: *const vk::Buffer,
15541
0
        p_offsets: *const vk::DeviceSize,
15542
0
        p_sizes: *const vk::DeviceSize,
15543
0
        p_strides: *const vk::DeviceSize,
15544
0
    ) {
15545
0
        let global = Self::instance();
15546
0
        // vkCmdBindVertexBuffers2
15547
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15548
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15549
        #[allow(clippy::unnecessary_cast)]
15550
        #[allow(clippy::unnecessary_cast)]
15551
        #[allow(clippy::unnecessary_cast)]
15552
        #[allow(clippy::unnecessary_cast)]
15553
0
        let layer_result = device_info
15554
0
            .customized_info
15555
0
            .borrow()
15556
0
            .hooks()
15557
0
            .cmd_bind_vertex_buffers2(
15558
0
                command_buffer,
15559
0
                first_binding,
15560
0
                unsafe { std::slice::from_raw_parts(p_buffers, binding_count as usize) },
15561
0
                unsafe { std::slice::from_raw_parts(p_offsets, binding_count as usize) },
15562
0
                if p_sizes.is_null() {
15563
0
                    None
15564
                } else {
15565
0
                    Some(unsafe { std::slice::from_raw_parts(p_sizes, binding_count as usize) })
15566
                },
15567
0
                if p_strides.is_null() {
15568
0
                    None
15569
                } else {
15570
0
                    Some(unsafe { std::slice::from_raw_parts(p_strides, binding_count as usize) })
15571
                },
15572
            );
15573
0
        match layer_result {
15574
0
            LayerResult::Handled(res) => res,
15575
            LayerResult::Unhandled => unsafe {
15576
0
                (dispatch_table.cmd_bind_vertex_buffers2)(
15577
0
                    command_buffer,
15578
0
                    first_binding,
15579
0
                    binding_count,
15580
0
                    p_buffers,
15581
0
                    p_offsets,
15582
0
                    p_sizes,
15583
0
                    p_strides,
15584
0
                )
15585
            },
15586
        }
15587
0
    }
15588
0
    extern "system" fn cmd_set_depth_test_enable(
15589
0
        command_buffer: vk::CommandBuffer,
15590
0
        depth_test_enable: vk::Bool32,
15591
0
    ) {
15592
0
        let global = Self::instance();
15593
0
        // vkCmdSetDepthTestEnable
15594
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15595
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15596
0
        let layer_result = device_info
15597
0
            .customized_info
15598
0
            .borrow()
15599
0
            .hooks()
15600
0
            .cmd_set_depth_test_enable(command_buffer, depth_test_enable == vk::TRUE);
15601
0
        match layer_result {
15602
0
            LayerResult::Handled(res) => res,
15603
            LayerResult::Unhandled => unsafe {
15604
0
                (dispatch_table.cmd_set_depth_test_enable)(command_buffer, depth_test_enable)
15605
            },
15606
        }
15607
0
    }
15608
0
    extern "system" fn cmd_set_depth_write_enable(
15609
0
        command_buffer: vk::CommandBuffer,
15610
0
        depth_write_enable: vk::Bool32,
15611
0
    ) {
15612
0
        let global = Self::instance();
15613
0
        // vkCmdSetDepthWriteEnable
15614
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15615
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15616
0
        let layer_result = device_info
15617
0
            .customized_info
15618
0
            .borrow()
15619
0
            .hooks()
15620
0
            .cmd_set_depth_write_enable(command_buffer, depth_write_enable == vk::TRUE);
15621
0
        match layer_result {
15622
0
            LayerResult::Handled(res) => res,
15623
            LayerResult::Unhandled => unsafe {
15624
0
                (dispatch_table.cmd_set_depth_write_enable)(command_buffer, depth_write_enable)
15625
            },
15626
        }
15627
0
    }
15628
0
    extern "system" fn cmd_set_depth_compare_op(
15629
0
        command_buffer: vk::CommandBuffer,
15630
0
        depth_compare_op: vk::CompareOp,
15631
0
    ) {
15632
0
        let global = Self::instance();
15633
0
        // vkCmdSetDepthCompareOp
15634
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15635
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15636
0
        let layer_result = device_info
15637
0
            .customized_info
15638
0
            .borrow()
15639
0
            .hooks()
15640
0
            .cmd_set_depth_compare_op(command_buffer, depth_compare_op);
15641
0
        match layer_result {
15642
0
            LayerResult::Handled(res) => res,
15643
            LayerResult::Unhandled => unsafe {
15644
0
                (dispatch_table.cmd_set_depth_compare_op)(command_buffer, depth_compare_op)
15645
            },
15646
        }
15647
0
    }
15648
0
    extern "system" fn cmd_set_depth_bounds_test_enable(
15649
0
        command_buffer: vk::CommandBuffer,
15650
0
        depth_bounds_test_enable: vk::Bool32,
15651
0
    ) {
15652
0
        let global = Self::instance();
15653
0
        // vkCmdSetDepthBoundsTestEnable
15654
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15655
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15656
0
        let layer_result = device_info
15657
0
            .customized_info
15658
0
            .borrow()
15659
0
            .hooks()
15660
0
            .cmd_set_depth_bounds_test_enable(command_buffer, depth_bounds_test_enable == vk::TRUE);
15661
0
        match layer_result {
15662
0
            LayerResult::Handled(res) => res,
15663
            LayerResult::Unhandled => unsafe {
15664
0
                (dispatch_table.cmd_set_depth_bounds_test_enable)(
15665
0
                    command_buffer,
15666
0
                    depth_bounds_test_enable,
15667
0
                )
15668
            },
15669
        }
15670
0
    }
15671
0
    extern "system" fn cmd_set_stencil_test_enable(
15672
0
        command_buffer: vk::CommandBuffer,
15673
0
        stencil_test_enable: vk::Bool32,
15674
0
    ) {
15675
0
        let global = Self::instance();
15676
0
        // vkCmdSetStencilTestEnable
15677
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15678
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15679
0
        let layer_result = device_info
15680
0
            .customized_info
15681
0
            .borrow()
15682
0
            .hooks()
15683
0
            .cmd_set_stencil_test_enable(command_buffer, stencil_test_enable == vk::TRUE);
15684
0
        match layer_result {
15685
0
            LayerResult::Handled(res) => res,
15686
            LayerResult::Unhandled => unsafe {
15687
0
                (dispatch_table.cmd_set_stencil_test_enable)(command_buffer, stencil_test_enable)
15688
            },
15689
        }
15690
0
    }
15691
0
    extern "system" fn cmd_set_stencil_op(
15692
0
        command_buffer: vk::CommandBuffer,
15693
0
        face_mask: vk::StencilFaceFlags,
15694
0
        fail_op: vk::StencilOp,
15695
0
        pass_op: vk::StencilOp,
15696
0
        depth_fail_op: vk::StencilOp,
15697
0
        compare_op: vk::CompareOp,
15698
0
    ) {
15699
0
        let global = Self::instance();
15700
0
        // vkCmdSetStencilOp
15701
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15702
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15703
0
        let layer_result = device_info
15704
0
            .customized_info
15705
0
            .borrow()
15706
0
            .hooks()
15707
0
            .cmd_set_stencil_op(
15708
0
                command_buffer,
15709
0
                face_mask,
15710
0
                fail_op,
15711
0
                pass_op,
15712
0
                depth_fail_op,
15713
0
                compare_op,
15714
0
            );
15715
0
        match layer_result {
15716
0
            LayerResult::Handled(res) => res,
15717
            LayerResult::Unhandled => unsafe {
15718
0
                (dispatch_table.cmd_set_stencil_op)(
15719
0
                    command_buffer,
15720
0
                    face_mask,
15721
0
                    fail_op,
15722
0
                    pass_op,
15723
0
                    depth_fail_op,
15724
0
                    compare_op,
15725
0
                )
15726
            },
15727
        }
15728
0
    }
15729
0
    extern "system" fn cmd_set_rasterizer_discard_enable(
15730
0
        command_buffer: vk::CommandBuffer,
15731
0
        rasterizer_discard_enable: vk::Bool32,
15732
0
    ) {
15733
0
        let global = Self::instance();
15734
0
        // vkCmdSetRasterizerDiscardEnable
15735
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15736
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15737
0
        let layer_result = device_info
15738
0
            .customized_info
15739
0
            .borrow()
15740
0
            .hooks()
15741
0
            .cmd_set_rasterizer_discard_enable(
15742
0
                command_buffer,
15743
0
                rasterizer_discard_enable == vk::TRUE,
15744
0
            );
15745
0
        match layer_result {
15746
0
            LayerResult::Handled(res) => res,
15747
            LayerResult::Unhandled => unsafe {
15748
0
                (dispatch_table.cmd_set_rasterizer_discard_enable)(
15749
0
                    command_buffer,
15750
0
                    rasterizer_discard_enable,
15751
0
                )
15752
            },
15753
        }
15754
0
    }
15755
0
    extern "system" fn cmd_set_depth_bias_enable(
15756
0
        command_buffer: vk::CommandBuffer,
15757
0
        depth_bias_enable: vk::Bool32,
15758
0
    ) {
15759
0
        let global = Self::instance();
15760
0
        // vkCmdSetDepthBiasEnable
15761
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15762
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15763
0
        let layer_result = device_info
15764
0
            .customized_info
15765
0
            .borrow()
15766
0
            .hooks()
15767
0
            .cmd_set_depth_bias_enable(command_buffer, depth_bias_enable == vk::TRUE);
15768
0
        match layer_result {
15769
0
            LayerResult::Handled(res) => res,
15770
            LayerResult::Unhandled => unsafe {
15771
0
                (dispatch_table.cmd_set_depth_bias_enable)(command_buffer, depth_bias_enable)
15772
            },
15773
        }
15774
0
    }
15775
0
    extern "system" fn cmd_set_primitive_restart_enable(
15776
0
        command_buffer: vk::CommandBuffer,
15777
0
        primitive_restart_enable: vk::Bool32,
15778
0
    ) {
15779
0
        let global = Self::instance();
15780
0
        // vkCmdSetPrimitiveRestartEnable
15781
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15782
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15783
0
        let layer_result = device_info
15784
0
            .customized_info
15785
0
            .borrow()
15786
0
            .hooks()
15787
0
            .cmd_set_primitive_restart_enable(command_buffer, primitive_restart_enable == vk::TRUE);
15788
0
        match layer_result {
15789
0
            LayerResult::Handled(res) => res,
15790
            LayerResult::Unhandled => unsafe {
15791
0
                (dispatch_table.cmd_set_primitive_restart_enable)(
15792
0
                    command_buffer,
15793
0
                    primitive_restart_enable,
15794
0
                )
15795
            },
15796
        }
15797
0
    }
15798
0
    extern "system" fn get_device_buffer_memory_requirements(
15799
0
        device: vk::Device,
15800
0
        p_info: *const vk::DeviceBufferMemoryRequirements,
15801
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15802
0
    ) {
15803
0
        let global = Self::instance();
15804
0
        // vkGetDeviceBufferMemoryRequirements
15805
0
        let device_info = global.get_device_info(device).unwrap();
15806
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15807
0
        let layer_result = device_info
15808
0
            .customized_info
15809
0
            .borrow()
15810
0
            .hooks()
15811
0
            .get_device_buffer_memory_requirements(
15812
0
                unsafe { p_info.as_ref() }.unwrap(),
15813
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
15814
0
            );
15815
0
        match layer_result {
15816
0
            LayerResult::Handled(res) => res,
15817
            LayerResult::Unhandled => unsafe {
15818
0
                (dispatch_table.get_device_buffer_memory_requirements)(
15819
0
                    device,
15820
0
                    p_info,
15821
0
                    p_memory_requirements,
15822
0
                )
15823
            },
15824
        }
15825
0
    }
15826
0
    extern "system" fn get_device_image_memory_requirements(
15827
0
        device: vk::Device,
15828
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15829
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15830
0
    ) {
15831
0
        let global = Self::instance();
15832
0
        // vkGetDeviceImageMemoryRequirements
15833
0
        let device_info = global.get_device_info(device).unwrap();
15834
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15835
0
        let layer_result = device_info
15836
0
            .customized_info
15837
0
            .borrow()
15838
0
            .hooks()
15839
0
            .get_device_image_memory_requirements(
15840
0
                unsafe { p_info.as_ref() }.unwrap(),
15841
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
15842
0
            );
15843
0
        match layer_result {
15844
0
            LayerResult::Handled(res) => res,
15845
            LayerResult::Unhandled => unsafe {
15846
0
                (dispatch_table.get_device_image_memory_requirements)(
15847
0
                    device,
15848
0
                    p_info,
15849
0
                    p_memory_requirements,
15850
0
                )
15851
            },
15852
        }
15853
0
    }
15854
0
    extern "system" fn get_device_image_sparse_memory_requirements(
15855
0
        device: vk::Device,
15856
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15857
0
        p_sparse_memory_requirement_count: *mut u32,
15858
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
15859
0
    ) {
15860
0
        let global = Self::instance();
15861
0
        // vkGetDeviceImageSparseMemoryRequirements
15862
0
        let device_info = global.get_device_info(device).unwrap();
15863
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15864
        #[allow(clippy::unnecessary_cast)]
15865
0
        let layer_result = device_info
15866
0
            .customized_info
15867
0
            .borrow()
15868
0
            .hooks()
15869
0
            .get_device_image_sparse_memory_requirements(
15870
0
                unsafe { p_info.as_ref() }.unwrap(),
15871
0
                if p_sparse_memory_requirements.is_null() {
15872
0
                    None
15873
                } else {
15874
0
                    Some(unsafe {
15875
0
                        std::slice::from_raw_parts_mut(
15876
0
                            p_sparse_memory_requirements,
15877
0
                            *unsafe { p_sparse_memory_requirement_count.as_ref() }.unwrap()
15878
0
                                as usize,
15879
0
                        )
15880
0
                    })
15881
                },
15882
            );
15883
0
        match layer_result {
15884
0
            LayerResult::Handled(res) => res,
15885
            LayerResult::Unhandled => unsafe {
15886
0
                (dispatch_table.get_device_image_sparse_memory_requirements)(
15887
0
                    device,
15888
0
                    p_info,
15889
0
                    p_sparse_memory_requirement_count,
15890
0
                    p_sparse_memory_requirements,
15891
0
                )
15892
            },
15893
        }
15894
0
    }
15895
0
    extern "system" fn create_swapchain_khr(
15896
0
        device: vk::Device,
15897
0
        p_create_info: *const vk::SwapchainCreateInfoKHR,
15898
0
        p_allocator: *const vk::AllocationCallbacks,
15899
0
        p_swapchain: *mut vk::SwapchainKHR,
15900
0
    ) -> vk::Result {
15901
0
        let global = Self::instance();
15902
0
        // vkCreateSwapchainKHR
15903
0
        let device_info = global.get_device_info(device).unwrap();
15904
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15905
0
        let layer_result = device_info
15906
0
            .customized_info
15907
0
            .borrow()
15908
0
            .hooks()
15909
0
            .create_swapchain_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
15910
0
                p_allocator.as_ref()
15911
0
            });
15912
0
        match layer_result {
15913
0
            LayerResult::Handled(res) => match res {
15914
0
                Ok(res) => {
15915
0
                    *unsafe { p_swapchain.as_mut() }.unwrap() = res;
15916
0
                    vk::Result::SUCCESS
15917
                }
15918
0
                Err(e) => e,
15919
            },
15920
            LayerResult::Unhandled => unsafe {
15921
0
                (dispatch_table.create_swapchain_khr)(
15922
0
                    device,
15923
0
                    p_create_info,
15924
0
                    p_allocator,
15925
0
                    p_swapchain,
15926
0
                )
15927
            },
15928
        }
15929
0
    }
15930
1
    extern "system" fn destroy_swapchain_khr(
15931
1
        device: vk::Device,
15932
1
        swapchain: vk::SwapchainKHR,
15933
1
        p_allocator: *const vk::AllocationCallbacks,
15934
1
    ) {
15935
1
        let global = Self::instance();
15936
1
        // vkDestroySwapchainKHR
15937
1
        let device_info = global.get_device_info(device).unwrap();
15938
1
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15939
1
        let layer_result = device_info
15940
1
            .customized_info
15941
1
            .borrow()
15942
1
            .hooks()
15943
1
            .destroy_swapchain_khr(swapchain, unsafe { p_allocator.as_ref() });
15944
1
        match layer_result {
15945
1
            LayerResult::Handled(res) => res,
15946
            LayerResult::Unhandled => unsafe {
15947
0
                (dispatch_table.destroy_swapchain_khr)(device, swapchain, p_allocator)
15948
            },
15949
        }
15950
1
    }
15951
0
    extern "system" fn get_swapchain_images_khr(
15952
0
        device: vk::Device,
15953
0
        swapchain: vk::SwapchainKHR,
15954
0
        p_swapchain_image_count: *mut u32,
15955
0
        p_swapchain_images: *mut vk::Image,
15956
0
    ) -> vk::Result {
15957
0
        let global = Self::instance();
15958
0
        // vkGetSwapchainImagesKHR
15959
0
        let device_info = global.get_device_info(device).unwrap();
15960
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15961
0
        let layer_result = device_info
15962
0
            .customized_info
15963
0
            .borrow()
15964
0
            .hooks()
15965
0
            .get_swapchain_images_khr(swapchain);
15966
0
        match layer_result {
15967
0
            LayerResult::Handled(res) => match res {
15968
0
                Ok(res) => unsafe {
15969
0
                    fill_vk_out_array(
15970
0
                        &res,
15971
0
                        NonNull::new(p_swapchain_image_count).unwrap(),
15972
0
                        p_swapchain_images,
15973
0
                    )
15974
                },
15975
0
                Err(e) => e,
15976
            },
15977
            LayerResult::Unhandled => unsafe {
15978
0
                (dispatch_table.get_swapchain_images_khr)(
15979
0
                    device,
15980
0
                    swapchain,
15981
0
                    p_swapchain_image_count,
15982
0
                    p_swapchain_images,
15983
0
                )
15984
            },
15985
        }
15986
0
    }
15987
0
    extern "system" fn acquire_next_image_khr(
15988
0
        device: vk::Device,
15989
0
        swapchain: vk::SwapchainKHR,
15990
0
        timeout: u64,
15991
0
        semaphore: vk::Semaphore,
15992
0
        fence: vk::Fence,
15993
0
        p_image_index: *mut u32,
15994
0
    ) -> vk::Result {
15995
0
        let global = Self::instance();
15996
0
        // vkAcquireNextImageKHR
15997
0
        let device_info = global.get_device_info(device).unwrap();
15998
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15999
0
        let layer_result = device_info
16000
0
            .customized_info
16001
0
            .borrow()
16002
0
            .hooks()
16003
0
            .acquire_next_image_khr(swapchain, timeout, semaphore, fence);
16004
0
        match layer_result {
16005
0
            LayerResult::Handled(res) => match res {
16006
0
                Ok(res) => {
16007
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
16008
0
                    vk::Result::SUCCESS
16009
                }
16010
0
                Err(e) => e,
16011
            },
16012
            LayerResult::Unhandled => unsafe {
16013
0
                (dispatch_table.acquire_next_image_khr)(
16014
0
                    device,
16015
0
                    swapchain,
16016
0
                    timeout,
16017
0
                    semaphore,
16018
0
                    fence,
16019
0
                    p_image_index,
16020
0
                )
16021
            },
16022
        }
16023
0
    }
16024
0
    extern "system" fn queue_present_khr(
16025
0
        queue: vk::Queue,
16026
0
        p_present_info: *const vk::PresentInfoKHR,
16027
0
    ) -> vk::Result {
16028
0
        let global = Self::instance();
16029
0
        // vkQueuePresentKHR
16030
0
        let device_info = global.get_device_info(queue).unwrap();
16031
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
16032
0
        let layer_result = device_info
16033
0
            .customized_info
16034
0
            .borrow()
16035
0
            .hooks()
16036
0
            .queue_present_khr(queue, unsafe { p_present_info.as_ref() }.unwrap());
16037
0
        match layer_result {
16038
0
            LayerResult::Handled(res) => match res {
16039
0
                Ok(()) => vk::Result::SUCCESS,
16040
0
                Err(e) => e,
16041
            },
16042
            LayerResult::Unhandled => unsafe {
16043
0
                (dispatch_table.queue_present_khr)(queue, p_present_info)
16044
            },
16045
        }
16046
0
    }
16047
0
    extern "system" fn get_device_group_present_capabilities_khr(
16048
0
        device: vk::Device,
16049
0
        p_device_group_present_capabilities: *mut vk::DeviceGroupPresentCapabilitiesKHR,
16050
0
    ) -> vk::Result {
16051
0
        let global = Self::instance();
16052
0
        // vkGetDeviceGroupPresentCapabilitiesKHR
16053
0
        let device_info = global.get_device_info(device).unwrap();
16054
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
16055
0
        let layer_result = device_info
16056
0
            .customized_info
16057
0
            .borrow()
16058
0
            .hooks()
16059
0
            .get_device_group_present_capabilities_khr(
16060
0
                unsafe { p_device_group_present_capabilities.as_mut() }.unwrap(),
16061
0
            );
16062
0
        match layer_result {
16063
0
            LayerResult::Handled(res) => match res {
16064
0
                Ok(()) => vk::Result::SUCCESS,
16065
0
                Err(e) => e,
16066
            },
16067
            LayerResult::Unhandled => unsafe {
16068
0
                (dispatch_table.get_device_group_present_capabilities_khr)(
16069
0
                    device,
16070
0
                    p_device_group_present_capabilities,
16071
0
                )
16072
            },
16073
        }
16074
0
    }
16075
0
    extern "system" fn get_device_group_surface_present_modes_khr(
16076
0
        device: vk::Device,
16077
0
        surface: vk::SurfaceKHR,
16078
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
16079
0
    ) -> vk::Result {
16080
0
        let global = Self::instance();
16081
0
        // vkGetDeviceGroupSurfacePresentModesKHR
16082
0
        let device_info = global.get_device_info(device).unwrap();
16083
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
16084
0
        let layer_result = device_info
16085
0
            .customized_info
16086
0
            .borrow()
16087
0
            .hooks()
16088
0
            .get_device_group_surface_present_modes_khr(surface);
16089
0
        match layer_result {
16090
0
            LayerResult::Handled(res) => match res {
16091
0
                Ok(res) => {
16092
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
16093
0
                    vk::Result::SUCCESS
16094
                }
16095
0
                Err(e) => e,
16096
            },
16097
            LayerResult::Unhandled => unsafe {
16098
0
                (dispatch_table.get_device_group_surface_present_modes_khr)(
16099
0
                    device, surface, p_modes,
16100
0
                )
16101
            },
16102
        }
16103
0
    }
16104
0
    extern "system" fn acquire_next_image2_khr(
16105
0
        device: vk::Device,
16106
0
        p_acquire_info: *const vk::AcquireNextImageInfoKHR,
16107
0
        p_image_index: *mut u32,
16108
0
    ) -> vk::Result {
16109
0
        let global = Self::instance();
16110
0
        // vkAcquireNextImage2KHR
16111
0
        let device_info = global.get_device_info(device).unwrap();
16112
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
16113
0
        let layer_result = device_info
16114
0
            .customized_info
16115
0
            .borrow()
16116
0
            .hooks()
16117
0
            .acquire_next_image2_khr(unsafe { p_acquire_info.as_ref() }.unwrap());
16118
0
        match layer_result {
16119
0
            LayerResult::Handled(res) => match res {
16120
0
                Ok(res) => {
16121
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
16122
0
                    vk::Result::SUCCESS
16123
                }
16124
0
                Err(e) => e,
16125
            },
16126
            LayerResult::Unhandled => unsafe {
16127
0
                (dispatch_table.acquire_next_image2_khr)(device, p_acquire_info, p_image_index)
16128
            },
16129
        }
16130
0
    }
16131
0
    extern "system" fn create_shared_swapchains_khr(
16132
0
        device: vk::Device,
16133
0
        swapchain_count: u32,
16134
0
        p_create_infos: *const vk::SwapchainCreateInfoKHR,
16135
0
        p_allocator: *const vk::AllocationCallbacks,
16136
0
        p_swapchains: *mut vk::SwapchainKHR,
16137
0
    ) -> vk::Result {
16138
0
        let global = Self::instance();
16139
0
        // vkCreateSharedSwapchainsKHR
16140
0
        let device_info = global.get_device_info(device).unwrap();
16141
0
        let dispatch_table = &device_info.dispatch_table.khr_display_swapchain;
16142
0
        #[allow(clippy::unnecessary_cast)]
16143
0
        let layer_result = device_info
16144
0
            .customized_info
16145
0
            .borrow()
16146
0
            .hooks()
16147
0
            .create_shared_swapchains_khr(
16148
0
                unsafe { std::slice::from_raw_parts(p_create_infos, swapchain_count as usize) },
16149
0
                unsafe { p_allocator.as_ref() },
16150
0
            );
16151
0
        match layer_result {
16152
0
            LayerResult::Handled(res) => match res {
16153
0
                Ok(res) => {
16154
0
                    unsafe {
16155
0
                        std::slice::from_raw_parts_mut(
16156
0
                            p_swapchains,
16157
0
                            swapchain_count.try_into().unwrap(),
16158
0
                        )
16159
0
                    }
16160
0
                    .copy_from_slice(&res);
16161
0
                    vk::Result::SUCCESS
16162
                }
16163
0
                Err(e) => e,
16164
            },
16165
            LayerResult::Unhandled => unsafe {
16166
0
                (dispatch_table.create_shared_swapchains_khr)(
16167
0
                    device,
16168
0
                    swapchain_count,
16169
0
                    p_create_infos,
16170
0
                    p_allocator,
16171
0
                    p_swapchains,
16172
0
                )
16173
            },
16174
        }
16175
0
    }
16176
0
    extern "system" fn create_video_session_khr(
16177
0
        device: vk::Device,
16178
0
        p_create_info: *const vk::VideoSessionCreateInfoKHR,
16179
0
        p_allocator: *const vk::AllocationCallbacks,
16180
0
        p_video_session: *mut vk::VideoSessionKHR,
16181
0
    ) -> vk::Result {
16182
0
        let global = Self::instance();
16183
0
        // vkCreateVideoSessionKHR
16184
0
        let device_info = global.get_device_info(device).unwrap();
16185
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16186
0
        let layer_result = device_info
16187
0
            .customized_info
16188
0
            .borrow()
16189
0
            .hooks()
16190
0
            .create_video_session_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
16191
0
                p_allocator.as_ref()
16192
0
            });
16193
0
        match layer_result {
16194
0
            LayerResult::Handled(res) => match res {
16195
0
                Ok(res) => {
16196
0
                    *unsafe { p_video_session.as_mut() }.unwrap() = res;
16197
0
                    vk::Result::SUCCESS
16198
                }
16199
0
                Err(e) => e,
16200
            },
16201
            LayerResult::Unhandled => unsafe {
16202
0
                (dispatch_table.create_video_session_khr)(
16203
0
                    device,
16204
0
                    p_create_info,
16205
0
                    p_allocator,
16206
0
                    p_video_session,
16207
0
                )
16208
            },
16209
        }
16210
0
    }
16211
0
    extern "system" fn destroy_video_session_khr(
16212
0
        device: vk::Device,
16213
0
        video_session: vk::VideoSessionKHR,
16214
0
        p_allocator: *const vk::AllocationCallbacks,
16215
0
    ) {
16216
0
        let global = Self::instance();
16217
0
        // vkDestroyVideoSessionKHR
16218
0
        let device_info = global.get_device_info(device).unwrap();
16219
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16220
0
        let layer_result = device_info
16221
0
            .customized_info
16222
0
            .borrow()
16223
0
            .hooks()
16224
0
            .destroy_video_session_khr(video_session, unsafe { p_allocator.as_ref() });
16225
0
        match layer_result {
16226
0
            LayerResult::Handled(res) => res,
16227
            LayerResult::Unhandled => unsafe {
16228
0
                (dispatch_table.destroy_video_session_khr)(device, video_session, p_allocator)
16229
            },
16230
        }
16231
0
    }
16232
0
    extern "system" fn get_video_session_memory_requirements_khr(
16233
0
        device: vk::Device,
16234
0
        video_session: vk::VideoSessionKHR,
16235
0
        p_memory_requirements_count: *mut u32,
16236
0
        p_memory_requirements: *mut vk::VideoSessionMemoryRequirementsKHR,
16237
0
    ) -> vk::Result {
16238
0
        let global = Self::instance();
16239
0
        // vkGetVideoSessionMemoryRequirementsKHR
16240
0
        let device_info = global.get_device_info(device).unwrap();
16241
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16242
        #[allow(clippy::unnecessary_cast)]
16243
0
        let layer_result = device_info
16244
0
            .customized_info
16245
0
            .borrow()
16246
0
            .hooks()
16247
0
            .get_video_session_memory_requirements_khr(
16248
0
                video_session,
16249
0
                if p_memory_requirements.is_null() {
16250
0
                    None
16251
                } else {
16252
0
                    Some(unsafe {
16253
0
                        std::slice::from_raw_parts_mut(
16254
0
                            p_memory_requirements,
16255
0
                            *unsafe { p_memory_requirements_count.as_ref() }.unwrap() as usize,
16256
0
                        )
16257
0
                    })
16258
                },
16259
            );
16260
0
        match layer_result {
16261
0
            LayerResult::Handled(res) => match res {
16262
0
                Ok(()) => vk::Result::SUCCESS,
16263
0
                Err(e) => e,
16264
            },
16265
            LayerResult::Unhandled => unsafe {
16266
0
                (dispatch_table.get_video_session_memory_requirements_khr)(
16267
0
                    device,
16268
0
                    video_session,
16269
0
                    p_memory_requirements_count,
16270
0
                    p_memory_requirements,
16271
0
                )
16272
            },
16273
        }
16274
0
    }
16275
0
    extern "system" fn bind_video_session_memory_khr(
16276
0
        device: vk::Device,
16277
0
        video_session: vk::VideoSessionKHR,
16278
0
        bind_session_memory_info_count: u32,
16279
0
        p_bind_session_memory_infos: *const vk::BindVideoSessionMemoryInfoKHR,
16280
0
    ) -> vk::Result {
16281
0
        let global = Self::instance();
16282
0
        // vkBindVideoSessionMemoryKHR
16283
0
        let device_info = global.get_device_info(device).unwrap();
16284
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16285
0
        #[allow(clippy::unnecessary_cast)]
16286
0
        let layer_result = device_info
16287
0
            .customized_info
16288
0
            .borrow()
16289
0
            .hooks()
16290
0
            .bind_video_session_memory_khr(video_session, unsafe {
16291
0
                std::slice::from_raw_parts(
16292
0
                    p_bind_session_memory_infos,
16293
0
                    bind_session_memory_info_count as usize,
16294
0
                )
16295
0
            });
16296
0
        match layer_result {
16297
0
            LayerResult::Handled(res) => match res {
16298
0
                Ok(()) => vk::Result::SUCCESS,
16299
0
                Err(e) => e,
16300
            },
16301
            LayerResult::Unhandled => unsafe {
16302
0
                (dispatch_table.bind_video_session_memory_khr)(
16303
0
                    device,
16304
0
                    video_session,
16305
0
                    bind_session_memory_info_count,
16306
0
                    p_bind_session_memory_infos,
16307
0
                )
16308
            },
16309
        }
16310
0
    }
16311
0
    extern "system" fn create_video_session_parameters_khr(
16312
0
        device: vk::Device,
16313
0
        p_create_info: *const vk::VideoSessionParametersCreateInfoKHR,
16314
0
        p_allocator: *const vk::AllocationCallbacks,
16315
0
        p_video_session_parameters: *mut vk::VideoSessionParametersKHR,
16316
0
    ) -> vk::Result {
16317
0
        let global = Self::instance();
16318
0
        // vkCreateVideoSessionParametersKHR
16319
0
        let device_info = global.get_device_info(device).unwrap();
16320
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16321
0
        let layer_result = device_info
16322
0
            .customized_info
16323
0
            .borrow()
16324
0
            .hooks()
16325
0
            .create_video_session_parameters_khr(
16326
0
                unsafe { p_create_info.as_ref() }.unwrap(),
16327
0
                unsafe { p_allocator.as_ref() },
16328
0
            );
16329
0
        match layer_result {
16330
0
            LayerResult::Handled(res) => match res {
16331
0
                Ok(res) => {
16332
0
                    *unsafe { p_video_session_parameters.as_mut() }.unwrap() = res;
16333
0
                    vk::Result::SUCCESS
16334
                }
16335
0
                Err(e) => e,
16336
            },
16337
            LayerResult::Unhandled => unsafe {
16338
0
                (dispatch_table.create_video_session_parameters_khr)(
16339
0
                    device,
16340
0
                    p_create_info,
16341
0
                    p_allocator,
16342
0
                    p_video_session_parameters,
16343
0
                )
16344
            },
16345
        }
16346
0
    }
16347
0
    extern "system" fn update_video_session_parameters_khr(
16348
0
        device: vk::Device,
16349
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16350
0
        p_update_info: *const vk::VideoSessionParametersUpdateInfoKHR,
16351
0
    ) -> vk::Result {
16352
0
        let global = Self::instance();
16353
0
        // vkUpdateVideoSessionParametersKHR
16354
0
        let device_info = global.get_device_info(device).unwrap();
16355
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16356
0
        let layer_result = device_info
16357
0
            .customized_info
16358
0
            .borrow()
16359
0
            .hooks()
16360
0
            .update_video_session_parameters_khr(
16361
0
                video_session_parameters,
16362
0
                unsafe { p_update_info.as_ref() }.unwrap(),
16363
0
            );
16364
0
        match layer_result {
16365
0
            LayerResult::Handled(res) => match res {
16366
0
                Ok(()) => vk::Result::SUCCESS,
16367
0
                Err(e) => e,
16368
            },
16369
            LayerResult::Unhandled => unsafe {
16370
0
                (dispatch_table.update_video_session_parameters_khr)(
16371
0
                    device,
16372
0
                    video_session_parameters,
16373
0
                    p_update_info,
16374
0
                )
16375
            },
16376
        }
16377
0
    }
16378
0
    extern "system" fn destroy_video_session_parameters_khr(
16379
0
        device: vk::Device,
16380
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16381
0
        p_allocator: *const vk::AllocationCallbacks,
16382
0
    ) {
16383
0
        let global = Self::instance();
16384
0
        // vkDestroyVideoSessionParametersKHR
16385
0
        let device_info = global.get_device_info(device).unwrap();
16386
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16387
0
        let layer_result = device_info
16388
0
            .customized_info
16389
0
            .borrow()
16390
0
            .hooks()
16391
0
            .destroy_video_session_parameters_khr(video_session_parameters, unsafe {
16392
0
                p_allocator.as_ref()
16393
0
            });
16394
0
        match layer_result {
16395
0
            LayerResult::Handled(res) => res,
16396
            LayerResult::Unhandled => unsafe {
16397
0
                (dispatch_table.destroy_video_session_parameters_khr)(
16398
0
                    device,
16399
0
                    video_session_parameters,
16400
0
                    p_allocator,
16401
0
                )
16402
            },
16403
        }
16404
0
    }
16405
0
    extern "system" fn cmd_begin_video_coding_khr(
16406
0
        command_buffer: vk::CommandBuffer,
16407
0
        p_begin_info: *const vk::VideoBeginCodingInfoKHR,
16408
0
    ) {
16409
0
        let global = Self::instance();
16410
0
        // vkCmdBeginVideoCodingKHR
16411
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16412
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16413
0
        let layer_result = device_info
16414
0
            .customized_info
16415
0
            .borrow()
16416
0
            .hooks()
16417
0
            .cmd_begin_video_coding_khr(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
16418
0
        match layer_result {
16419
0
            LayerResult::Handled(res) => res,
16420
            LayerResult::Unhandled => unsafe {
16421
0
                (dispatch_table.cmd_begin_video_coding_khr)(command_buffer, p_begin_info)
16422
            },
16423
        }
16424
0
    }
16425
0
    extern "system" fn cmd_end_video_coding_khr(
16426
0
        command_buffer: vk::CommandBuffer,
16427
0
        p_end_coding_info: *const vk::VideoEndCodingInfoKHR,
16428
0
    ) {
16429
0
        let global = Self::instance();
16430
0
        // vkCmdEndVideoCodingKHR
16431
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16432
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16433
0
        let layer_result = device_info
16434
0
            .customized_info
16435
0
            .borrow()
16436
0
            .hooks()
16437
0
            .cmd_end_video_coding_khr(
16438
0
                command_buffer,
16439
0
                unsafe { p_end_coding_info.as_ref() }.unwrap(),
16440
0
            );
16441
0
        match layer_result {
16442
0
            LayerResult::Handled(res) => res,
16443
            LayerResult::Unhandled => unsafe {
16444
0
                (dispatch_table.cmd_end_video_coding_khr)(command_buffer, p_end_coding_info)
16445
            },
16446
        }
16447
0
    }
16448
0
    extern "system" fn cmd_control_video_coding_khr(
16449
0
        command_buffer: vk::CommandBuffer,
16450
0
        p_coding_control_info: *const vk::VideoCodingControlInfoKHR,
16451
0
    ) {
16452
0
        let global = Self::instance();
16453
0
        // vkCmdControlVideoCodingKHR
16454
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16455
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16456
0
        let layer_result = device_info
16457
0
            .customized_info
16458
0
            .borrow()
16459
0
            .hooks()
16460
0
            .cmd_control_video_coding_khr(
16461
0
                command_buffer,
16462
0
                unsafe { p_coding_control_info.as_ref() }.unwrap(),
16463
0
            );
16464
0
        match layer_result {
16465
0
            LayerResult::Handled(res) => res,
16466
            LayerResult::Unhandled => unsafe {
16467
0
                (dispatch_table.cmd_control_video_coding_khr)(command_buffer, p_coding_control_info)
16468
            },
16469
        }
16470
0
    }
16471
0
    extern "system" fn cmd_decode_video_khr(
16472
0
        command_buffer: vk::CommandBuffer,
16473
0
        p_decode_info: *const vk::VideoDecodeInfoKHR,
16474
0
    ) {
16475
0
        let global = Self::instance();
16476
0
        // vkCmdDecodeVideoKHR
16477
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16478
0
        let dispatch_table = &device_info.dispatch_table.khr_video_decode_queue;
16479
0
        let layer_result = device_info
16480
0
            .customized_info
16481
0
            .borrow()
16482
0
            .hooks()
16483
0
            .cmd_decode_video_khr(command_buffer, unsafe { p_decode_info.as_ref() }.unwrap());
16484
0
        match layer_result {
16485
0
            LayerResult::Handled(res) => res,
16486
            LayerResult::Unhandled => unsafe {
16487
0
                (dispatch_table.cmd_decode_video_khr)(command_buffer, p_decode_info)
16488
            },
16489
        }
16490
0
    }
16491
0
    extern "system" fn get_memory_win32_handle_khr(
16492
0
        device: vk::Device,
16493
0
        p_get_win32_handle_info: *const vk::MemoryGetWin32HandleInfoKHR,
16494
0
        p_handle: *mut vk::HANDLE,
16495
0
    ) -> vk::Result {
16496
0
        let global = Self::instance();
16497
0
        // vkGetMemoryWin32HandleKHR
16498
0
        let device_info = global.get_device_info(device).unwrap();
16499
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16500
0
        let layer_result = device_info
16501
0
            .customized_info
16502
0
            .borrow()
16503
0
            .hooks()
16504
0
            .get_memory_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16505
0
        match layer_result {
16506
0
            LayerResult::Handled(res) => match res {
16507
0
                Ok(res) => {
16508
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16509
0
                    vk::Result::SUCCESS
16510
                }
16511
0
                Err(e) => e,
16512
            },
16513
            LayerResult::Unhandled => unsafe {
16514
0
                (dispatch_table.get_memory_win32_handle_khr)(
16515
0
                    device,
16516
0
                    p_get_win32_handle_info,
16517
0
                    p_handle,
16518
0
                )
16519
            },
16520
        }
16521
0
    }
16522
0
    extern "system" fn get_memory_win32_handle_properties_khr(
16523
0
        device: vk::Device,
16524
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16525
0
        handle: vk::HANDLE,
16526
0
        p_memory_win32_handle_properties: *mut vk::MemoryWin32HandlePropertiesKHR,
16527
0
    ) -> vk::Result {
16528
0
        let global = Self::instance();
16529
0
        // vkGetMemoryWin32HandlePropertiesKHR
16530
0
        let device_info = global.get_device_info(device).unwrap();
16531
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16532
0
        let layer_result = device_info
16533
0
            .customized_info
16534
0
            .borrow()
16535
0
            .hooks()
16536
0
            .get_memory_win32_handle_properties_khr(
16537
0
                handle_type,
16538
0
                handle,
16539
0
                unsafe { p_memory_win32_handle_properties.as_mut() }.unwrap(),
16540
0
            );
16541
0
        match layer_result {
16542
0
            LayerResult::Handled(res) => match res {
16543
0
                Ok(()) => vk::Result::SUCCESS,
16544
0
                Err(e) => e,
16545
            },
16546
            LayerResult::Unhandled => unsafe {
16547
0
                (dispatch_table.get_memory_win32_handle_properties_khr)(
16548
0
                    device,
16549
0
                    handle_type,
16550
0
                    handle,
16551
0
                    p_memory_win32_handle_properties,
16552
0
                )
16553
            },
16554
        }
16555
0
    }
16556
0
    extern "system" fn get_memory_fd_khr(
16557
0
        device: vk::Device,
16558
0
        p_get_fd_info: *const vk::MemoryGetFdInfoKHR,
16559
0
        p_fd: *mut c_int,
16560
0
    ) -> vk::Result {
16561
0
        let global = Self::instance();
16562
0
        // vkGetMemoryFdKHR
16563
0
        let device_info = global.get_device_info(device).unwrap();
16564
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16565
0
        let layer_result = device_info
16566
0
            .customized_info
16567
0
            .borrow()
16568
0
            .hooks()
16569
0
            .get_memory_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16570
0
        match layer_result {
16571
0
            LayerResult::Handled(res) => match res {
16572
0
                Ok(res) => {
16573
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16574
0
                    vk::Result::SUCCESS
16575
                }
16576
0
                Err(e) => e,
16577
            },
16578
            LayerResult::Unhandled => unsafe {
16579
0
                (dispatch_table.get_memory_fd_khr)(device, p_get_fd_info, p_fd)
16580
            },
16581
        }
16582
0
    }
16583
0
    extern "system" fn get_memory_fd_properties_khr(
16584
0
        device: vk::Device,
16585
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16586
0
        fd: c_int,
16587
0
        p_memory_fd_properties: *mut vk::MemoryFdPropertiesKHR,
16588
0
    ) -> vk::Result {
16589
0
        let global = Self::instance();
16590
0
        // vkGetMemoryFdPropertiesKHR
16591
0
        let device_info = global.get_device_info(device).unwrap();
16592
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16593
0
        let layer_result = device_info
16594
0
            .customized_info
16595
0
            .borrow()
16596
0
            .hooks()
16597
0
            .get_memory_fd_properties_khr(
16598
0
                handle_type,
16599
0
                fd,
16600
0
                unsafe { p_memory_fd_properties.as_mut() }.unwrap(),
16601
0
            );
16602
0
        match layer_result {
16603
0
            LayerResult::Handled(res) => match res {
16604
0
                Ok(()) => vk::Result::SUCCESS,
16605
0
                Err(e) => e,
16606
            },
16607
            LayerResult::Unhandled => unsafe {
16608
0
                (dispatch_table.get_memory_fd_properties_khr)(
16609
0
                    device,
16610
0
                    handle_type,
16611
0
                    fd,
16612
0
                    p_memory_fd_properties,
16613
0
                )
16614
            },
16615
        }
16616
0
    }
16617
0
    extern "system" fn import_semaphore_win32_handle_khr(
16618
0
        device: vk::Device,
16619
0
        p_import_semaphore_win32_handle_info: *const vk::ImportSemaphoreWin32HandleInfoKHR,
16620
0
    ) -> vk::Result {
16621
0
        let global = Self::instance();
16622
0
        // vkImportSemaphoreWin32HandleKHR
16623
0
        let device_info = global.get_device_info(device).unwrap();
16624
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16625
0
        let layer_result = device_info
16626
0
            .customized_info
16627
0
            .borrow()
16628
0
            .hooks()
16629
0
            .import_semaphore_win32_handle_khr(
16630
0
                unsafe { p_import_semaphore_win32_handle_info.as_ref() }.unwrap(),
16631
0
            );
16632
0
        match layer_result {
16633
0
            LayerResult::Handled(res) => match res {
16634
0
                Ok(()) => vk::Result::SUCCESS,
16635
0
                Err(e) => e,
16636
            },
16637
            LayerResult::Unhandled => unsafe {
16638
0
                (dispatch_table.import_semaphore_win32_handle_khr)(
16639
0
                    device,
16640
0
                    p_import_semaphore_win32_handle_info,
16641
0
                )
16642
            },
16643
        }
16644
0
    }
16645
0
    extern "system" fn get_semaphore_win32_handle_khr(
16646
0
        device: vk::Device,
16647
0
        p_get_win32_handle_info: *const vk::SemaphoreGetWin32HandleInfoKHR,
16648
0
        p_handle: *mut vk::HANDLE,
16649
0
    ) -> vk::Result {
16650
0
        let global = Self::instance();
16651
0
        // vkGetSemaphoreWin32HandleKHR
16652
0
        let device_info = global.get_device_info(device).unwrap();
16653
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16654
0
        let layer_result = device_info
16655
0
            .customized_info
16656
0
            .borrow()
16657
0
            .hooks()
16658
0
            .get_semaphore_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16659
0
        match layer_result {
16660
0
            LayerResult::Handled(res) => match res {
16661
0
                Ok(res) => {
16662
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16663
0
                    vk::Result::SUCCESS
16664
                }
16665
0
                Err(e) => e,
16666
            },
16667
            LayerResult::Unhandled => unsafe {
16668
0
                (dispatch_table.get_semaphore_win32_handle_khr)(
16669
0
                    device,
16670
0
                    p_get_win32_handle_info,
16671
0
                    p_handle,
16672
0
                )
16673
            },
16674
        }
16675
0
    }
16676
0
    extern "system" fn import_semaphore_fd_khr(
16677
0
        device: vk::Device,
16678
0
        p_import_semaphore_fd_info: *const vk::ImportSemaphoreFdInfoKHR,
16679
0
    ) -> vk::Result {
16680
0
        let global = Self::instance();
16681
0
        // vkImportSemaphoreFdKHR
16682
0
        let device_info = global.get_device_info(device).unwrap();
16683
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16684
0
        let layer_result = device_info
16685
0
            .customized_info
16686
0
            .borrow()
16687
0
            .hooks()
16688
0
            .import_semaphore_fd_khr(unsafe { p_import_semaphore_fd_info.as_ref() }.unwrap());
16689
0
        match layer_result {
16690
0
            LayerResult::Handled(res) => match res {
16691
0
                Ok(()) => vk::Result::SUCCESS,
16692
0
                Err(e) => e,
16693
            },
16694
            LayerResult::Unhandled => unsafe {
16695
0
                (dispatch_table.import_semaphore_fd_khr)(device, p_import_semaphore_fd_info)
16696
            },
16697
        }
16698
0
    }
16699
0
    extern "system" fn get_semaphore_fd_khr(
16700
0
        device: vk::Device,
16701
0
        p_get_fd_info: *const vk::SemaphoreGetFdInfoKHR,
16702
0
        p_fd: *mut c_int,
16703
0
    ) -> vk::Result {
16704
0
        let global = Self::instance();
16705
0
        // vkGetSemaphoreFdKHR
16706
0
        let device_info = global.get_device_info(device).unwrap();
16707
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16708
0
        let layer_result = device_info
16709
0
            .customized_info
16710
0
            .borrow()
16711
0
            .hooks()
16712
0
            .get_semaphore_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16713
0
        match layer_result {
16714
0
            LayerResult::Handled(res) => match res {
16715
0
                Ok(res) => {
16716
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16717
0
                    vk::Result::SUCCESS
16718
                }
16719
0
                Err(e) => e,
16720
            },
16721
            LayerResult::Unhandled => unsafe {
16722
0
                (dispatch_table.get_semaphore_fd_khr)(device, p_get_fd_info, p_fd)
16723
            },
16724
        }
16725
0
    }
16726
0
    extern "system" fn cmd_push_descriptor_set_khr(
16727
0
        command_buffer: vk::CommandBuffer,
16728
0
        pipeline_bind_point: vk::PipelineBindPoint,
16729
0
        layout: vk::PipelineLayout,
16730
0
        set: u32,
16731
0
        descriptor_write_count: u32,
16732
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
16733
0
    ) {
16734
0
        let global = Self::instance();
16735
0
        // vkCmdPushDescriptorSetKHR
16736
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16737
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16738
0
        #[allow(clippy::unnecessary_cast)]
16739
0
        let layer_result = device_info
16740
0
            .customized_info
16741
0
            .borrow()
16742
0
            .hooks()
16743
0
            .cmd_push_descriptor_set_khr(
16744
0
                command_buffer,
16745
0
                pipeline_bind_point,
16746
0
                layout,
16747
0
                set,
16748
0
                unsafe {
16749
0
                    std::slice::from_raw_parts(p_descriptor_writes, descriptor_write_count as usize)
16750
0
                },
16751
0
            );
16752
0
        match layer_result {
16753
0
            LayerResult::Handled(res) => res,
16754
            LayerResult::Unhandled => unsafe {
16755
0
                (dispatch_table.cmd_push_descriptor_set_khr)(
16756
0
                    command_buffer,
16757
0
                    pipeline_bind_point,
16758
0
                    layout,
16759
0
                    set,
16760
0
                    descriptor_write_count,
16761
0
                    p_descriptor_writes,
16762
0
                )
16763
            },
16764
        }
16765
0
    }
16766
0
    extern "system" fn cmd_push_descriptor_set_with_template_khr(
16767
0
        command_buffer: vk::CommandBuffer,
16768
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
16769
0
        layout: vk::PipelineLayout,
16770
0
        set: u32,
16771
0
        p_data: *const c_void,
16772
0
    ) {
16773
0
        let global = Self::instance();
16774
0
        // vkCmdPushDescriptorSetWithTemplateKHR
16775
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16776
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16777
0
        let layer_result = device_info
16778
0
            .customized_info
16779
0
            .borrow()
16780
0
            .hooks()
16781
0
            .cmd_push_descriptor_set_with_template_khr(
16782
0
                command_buffer,
16783
0
                descriptor_update_template,
16784
0
                layout,
16785
0
                set,
16786
0
                unsafe { p_data.as_ref() }.unwrap(),
16787
0
            );
16788
0
        match layer_result {
16789
0
            LayerResult::Handled(res) => res,
16790
            LayerResult::Unhandled => unsafe {
16791
0
                (dispatch_table.cmd_push_descriptor_set_with_template_khr)(
16792
0
                    command_buffer,
16793
0
                    descriptor_update_template,
16794
0
                    layout,
16795
0
                    set,
16796
0
                    p_data,
16797
0
                )
16798
            },
16799
        }
16800
0
    }
16801
0
    extern "system" fn get_swapchain_status_khr(
16802
0
        device: vk::Device,
16803
0
        swapchain: vk::SwapchainKHR,
16804
0
    ) -> vk::Result {
16805
0
        let global = Self::instance();
16806
0
        // vkGetSwapchainStatusKHR
16807
0
        let device_info = global.get_device_info(device).unwrap();
16808
0
        let dispatch_table = &device_info.dispatch_table.khr_shared_presentable_image;
16809
0
        let layer_result = device_info
16810
0
            .customized_info
16811
0
            .borrow()
16812
0
            .hooks()
16813
0
            .get_swapchain_status_khr(swapchain);
16814
0
        match layer_result {
16815
0
            LayerResult::Handled(res) => match res {
16816
0
                Ok(()) => vk::Result::SUCCESS,
16817
0
                Err(e) => e,
16818
            },
16819
            LayerResult::Unhandled => unsafe {
16820
0
                (dispatch_table.get_swapchain_status_khr)(device, swapchain)
16821
            },
16822
        }
16823
0
    }
16824
0
    extern "system" fn import_fence_win32_handle_khr(
16825
0
        device: vk::Device,
16826
0
        p_import_fence_win32_handle_info: *const vk::ImportFenceWin32HandleInfoKHR,
16827
0
    ) -> vk::Result {
16828
0
        let global = Self::instance();
16829
0
        // vkImportFenceWin32HandleKHR
16830
0
        let device_info = global.get_device_info(device).unwrap();
16831
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16832
0
        let layer_result = device_info
16833
0
            .customized_info
16834
0
            .borrow()
16835
0
            .hooks()
16836
0
            .import_fence_win32_handle_khr(
16837
0
                unsafe { p_import_fence_win32_handle_info.as_ref() }.unwrap(),
16838
0
            );
16839
0
        match layer_result {
16840
0
            LayerResult::Handled(res) => match res {
16841
0
                Ok(()) => vk::Result::SUCCESS,
16842
0
                Err(e) => e,
16843
            },
16844
            LayerResult::Unhandled => unsafe {
16845
0
                (dispatch_table.import_fence_win32_handle_khr)(
16846
0
                    device,
16847
0
                    p_import_fence_win32_handle_info,
16848
0
                )
16849
            },
16850
        }
16851
0
    }
16852
0
    extern "system" fn get_fence_win32_handle_khr(
16853
0
        device: vk::Device,
16854
0
        p_get_win32_handle_info: *const vk::FenceGetWin32HandleInfoKHR,
16855
0
        p_handle: *mut vk::HANDLE,
16856
0
    ) -> vk::Result {
16857
0
        let global = Self::instance();
16858
0
        // vkGetFenceWin32HandleKHR
16859
0
        let device_info = global.get_device_info(device).unwrap();
16860
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16861
0
        let layer_result = device_info
16862
0
            .customized_info
16863
0
            .borrow()
16864
0
            .hooks()
16865
0
            .get_fence_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16866
0
        match layer_result {
16867
0
            LayerResult::Handled(res) => match res {
16868
0
                Ok(res) => {
16869
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16870
0
                    vk::Result::SUCCESS
16871
                }
16872
0
                Err(e) => e,
16873
            },
16874
            LayerResult::Unhandled => unsafe {
16875
0
                (dispatch_table.get_fence_win32_handle_khr)(
16876
0
                    device,
16877
0
                    p_get_win32_handle_info,
16878
0
                    p_handle,
16879
0
                )
16880
            },
16881
        }
16882
0
    }
16883
0
    extern "system" fn import_fence_fd_khr(
16884
0
        device: vk::Device,
16885
0
        p_import_fence_fd_info: *const vk::ImportFenceFdInfoKHR,
16886
0
    ) -> vk::Result {
16887
0
        let global = Self::instance();
16888
0
        // vkImportFenceFdKHR
16889
0
        let device_info = global.get_device_info(device).unwrap();
16890
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16891
0
        let layer_result = device_info
16892
0
            .customized_info
16893
0
            .borrow()
16894
0
            .hooks()
16895
0
            .import_fence_fd_khr(unsafe { p_import_fence_fd_info.as_ref() }.unwrap());
16896
0
        match layer_result {
16897
0
            LayerResult::Handled(res) => match res {
16898
0
                Ok(()) => vk::Result::SUCCESS,
16899
0
                Err(e) => e,
16900
            },
16901
            LayerResult::Unhandled => unsafe {
16902
0
                (dispatch_table.import_fence_fd_khr)(device, p_import_fence_fd_info)
16903
            },
16904
        }
16905
0
    }
16906
0
    extern "system" fn get_fence_fd_khr(
16907
0
        device: vk::Device,
16908
0
        p_get_fd_info: *const vk::FenceGetFdInfoKHR,
16909
0
        p_fd: *mut c_int,
16910
0
    ) -> vk::Result {
16911
0
        let global = Self::instance();
16912
0
        // vkGetFenceFdKHR
16913
0
        let device_info = global.get_device_info(device).unwrap();
16914
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16915
0
        let layer_result = device_info
16916
0
            .customized_info
16917
0
            .borrow()
16918
0
            .hooks()
16919
0
            .get_fence_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16920
0
        match layer_result {
16921
0
            LayerResult::Handled(res) => match res {
16922
0
                Ok(res) => {
16923
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16924
0
                    vk::Result::SUCCESS
16925
                }
16926
0
                Err(e) => e,
16927
            },
16928
            LayerResult::Unhandled => unsafe {
16929
0
                (dispatch_table.get_fence_fd_khr)(device, p_get_fd_info, p_fd)
16930
            },
16931
        }
16932
0
    }
16933
0
    extern "system" fn acquire_profiling_lock_khr(
16934
0
        device: vk::Device,
16935
0
        p_info: *const vk::AcquireProfilingLockInfoKHR,
16936
0
    ) -> vk::Result {
16937
0
        let global = Self::instance();
16938
0
        // vkAcquireProfilingLockKHR
16939
0
        let device_info = global.get_device_info(device).unwrap();
16940
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16941
0
        let layer_result = device_info
16942
0
            .customized_info
16943
0
            .borrow()
16944
0
            .hooks()
16945
0
            .acquire_profiling_lock_khr(unsafe { p_info.as_ref() }.unwrap());
16946
0
        match layer_result {
16947
0
            LayerResult::Handled(res) => match res {
16948
0
                Ok(()) => vk::Result::SUCCESS,
16949
0
                Err(e) => e,
16950
            },
16951
            LayerResult::Unhandled => unsafe {
16952
0
                (dispatch_table.acquire_profiling_lock_khr)(device, p_info)
16953
            },
16954
        }
16955
0
    }
16956
0
    extern "system" fn release_profiling_lock_khr(device: vk::Device) {
16957
0
        let global = Self::instance();
16958
0
        // vkReleaseProfilingLockKHR
16959
0
        let device_info = global.get_device_info(device).unwrap();
16960
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16961
0
        let layer_result = device_info
16962
0
            .customized_info
16963
0
            .borrow()
16964
0
            .hooks()
16965
0
            .release_profiling_lock_khr();
16966
0
        match layer_result {
16967
0
            LayerResult::Handled(res) => res,
16968
            LayerResult::Unhandled => unsafe {
16969
0
                (dispatch_table.release_profiling_lock_khr)(device)
16970
            },
16971
        }
16972
0
    }
16973
0
    extern "system" fn cmd_set_fragment_shading_rate_khr(
16974
0
        command_buffer: vk::CommandBuffer,
16975
0
        p_fragment_size: *const vk::Extent2D,
16976
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
16977
0
    ) {
16978
0
        let global = Self::instance();
16979
0
        // vkCmdSetFragmentShadingRateKHR
16980
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16981
0
        let dispatch_table = &device_info.dispatch_table.khr_fragment_shading_rate;
16982
0
        let combiner_ops = unsafe { combiner_ops.as_ref() }.unwrap();
16983
0
        let layer_result = device_info
16984
0
            .customized_info
16985
0
            .borrow()
16986
0
            .hooks()
16987
0
            .cmd_set_fragment_shading_rate_khr(
16988
0
                command_buffer,
16989
0
                unsafe { p_fragment_size.as_ref() }.unwrap(),
16990
0
                combiner_ops,
16991
0
            );
16992
0
        match layer_result {
16993
0
            LayerResult::Handled(res) => res,
16994
            LayerResult::Unhandled => unsafe {
16995
0
                (dispatch_table.cmd_set_fragment_shading_rate_khr)(
16996
0
                    command_buffer,
16997
0
                    p_fragment_size,
16998
0
                    combiner_ops,
16999
0
                )
17000
            },
17001
        }
17002
0
    }
17003
0
    extern "system" fn wait_for_present_khr(
17004
0
        device: vk::Device,
17005
0
        swapchain: vk::SwapchainKHR,
17006
0
        present_id: u64,
17007
0
        timeout: u64,
17008
0
    ) -> vk::Result {
17009
0
        let global = Self::instance();
17010
0
        // vkWaitForPresentKHR
17011
0
        let device_info = global.get_device_info(device).unwrap();
17012
0
        let dispatch_table = &device_info.dispatch_table.khr_present_wait;
17013
0
        let layer_result = device_info
17014
0
            .customized_info
17015
0
            .borrow()
17016
0
            .hooks()
17017
0
            .wait_for_present_khr(swapchain, present_id, timeout);
17018
0
        match layer_result {
17019
0
            LayerResult::Handled(res) => match res {
17020
0
                Ok(()) => vk::Result::SUCCESS,
17021
0
                Err(e) => e,
17022
            },
17023
            LayerResult::Unhandled => unsafe {
17024
0
                (dispatch_table.wait_for_present_khr)(device, swapchain, present_id, timeout)
17025
            },
17026
        }
17027
0
    }
17028
0
    extern "system" fn create_deferred_operation_khr(
17029
0
        device: vk::Device,
17030
0
        p_allocator: *const vk::AllocationCallbacks,
17031
0
        p_deferred_operation: *mut vk::DeferredOperationKHR,
17032
0
    ) -> vk::Result {
17033
0
        let global = Self::instance();
17034
0
        // vkCreateDeferredOperationKHR
17035
0
        let device_info = global.get_device_info(device).unwrap();
17036
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
17037
0
        let layer_result = device_info
17038
0
            .customized_info
17039
0
            .borrow()
17040
0
            .hooks()
17041
0
            .create_deferred_operation_khr(unsafe { p_allocator.as_ref() });
17042
0
        match layer_result {
17043
0
            LayerResult::Handled(res) => match res {
17044
0
                Ok(res) => {
17045
0
                    *unsafe { p_deferred_operation.as_mut() }.unwrap() = res;
17046
0
                    vk::Result::SUCCESS
17047
                }
17048
0
                Err(e) => e,
17049
            },
17050
            LayerResult::Unhandled => unsafe {
17051
0
                (dispatch_table.create_deferred_operation_khr)(
17052
0
                    device,
17053
0
                    p_allocator,
17054
0
                    p_deferred_operation,
17055
0
                )
17056
            },
17057
        }
17058
0
    }
17059
0
    extern "system" fn destroy_deferred_operation_khr(
17060
0
        device: vk::Device,
17061
0
        operation: vk::DeferredOperationKHR,
17062
0
        p_allocator: *const vk::AllocationCallbacks,
17063
0
    ) {
17064
0
        let global = Self::instance();
17065
0
        // vkDestroyDeferredOperationKHR
17066
0
        let device_info = global.get_device_info(device).unwrap();
17067
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
17068
0
        let layer_result = device_info
17069
0
            .customized_info
17070
0
            .borrow()
17071
0
            .hooks()
17072
0
            .destroy_deferred_operation_khr(operation, unsafe { p_allocator.as_ref() });
17073
0
        match layer_result {
17074
0
            LayerResult::Handled(res) => res,
17075
            LayerResult::Unhandled => unsafe {
17076
0
                (dispatch_table.destroy_deferred_operation_khr)(device, operation, p_allocator)
17077
            },
17078
        }
17079
0
    }
17080
0
    extern "system" fn get_deferred_operation_max_concurrency_khr(
17081
0
        device: vk::Device,
17082
0
        operation: vk::DeferredOperationKHR,
17083
0
    ) -> u32 {
17084
0
        let global = Self::instance();
17085
0
        // vkGetDeferredOperationMaxConcurrencyKHR
17086
0
        let device_info = global.get_device_info(device).unwrap();
17087
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
17088
0
        let layer_result = device_info
17089
0
            .customized_info
17090
0
            .borrow()
17091
0
            .hooks()
17092
0
            .get_deferred_operation_max_concurrency_khr(operation);
17093
0
        match layer_result {
17094
0
            LayerResult::Handled(res) => res,
17095
            LayerResult::Unhandled => unsafe {
17096
0
                (dispatch_table.get_deferred_operation_max_concurrency_khr)(device, operation)
17097
            },
17098
        }
17099
0
    }
17100
0
    extern "system" fn get_deferred_operation_result_khr(
17101
0
        device: vk::Device,
17102
0
        operation: vk::DeferredOperationKHR,
17103
0
    ) -> vk::Result {
17104
0
        let global = Self::instance();
17105
0
        // vkGetDeferredOperationResultKHR
17106
0
        let device_info = global.get_device_info(device).unwrap();
17107
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
17108
0
        let layer_result = device_info
17109
0
            .customized_info
17110
0
            .borrow()
17111
0
            .hooks()
17112
0
            .get_deferred_operation_result_khr(operation);
17113
0
        match layer_result {
17114
0
            LayerResult::Handled(res) => match res {
17115
0
                Ok(()) => vk::Result::SUCCESS,
17116
0
                Err(e) => e,
17117
            },
17118
            LayerResult::Unhandled => unsafe {
17119
0
                (dispatch_table.get_deferred_operation_result_khr)(device, operation)
17120
            },
17121
        }
17122
0
    }
17123
0
    extern "system" fn deferred_operation_join_khr(
17124
0
        device: vk::Device,
17125
0
        operation: vk::DeferredOperationKHR,
17126
0
    ) -> vk::Result {
17127
0
        let global = Self::instance();
17128
0
        // vkDeferredOperationJoinKHR
17129
0
        let device_info = global.get_device_info(device).unwrap();
17130
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
17131
0
        let layer_result = device_info
17132
0
            .customized_info
17133
0
            .borrow()
17134
0
            .hooks()
17135
0
            .deferred_operation_join_khr(operation);
17136
0
        match layer_result {
17137
0
            LayerResult::Handled(res) => match res {
17138
0
                Ok(()) => vk::Result::SUCCESS,
17139
0
                Err(e) => e,
17140
            },
17141
            LayerResult::Unhandled => unsafe {
17142
0
                (dispatch_table.deferred_operation_join_khr)(device, operation)
17143
            },
17144
        }
17145
0
    }
17146
0
    extern "system" fn get_pipeline_executable_properties_khr(
17147
0
        device: vk::Device,
17148
0
        p_pipeline_info: *const vk::PipelineInfoKHR,
17149
0
        p_executable_count: *mut u32,
17150
0
        p_properties: *mut vk::PipelineExecutablePropertiesKHR,
17151
0
    ) -> vk::Result {
17152
0
        let global = Self::instance();
17153
0
        // vkGetPipelineExecutablePropertiesKHR
17154
0
        let device_info = global.get_device_info(device).unwrap();
17155
0
        let dispatch_table = &device_info
17156
0
            .dispatch_table
17157
0
            .khr_pipeline_executable_properties;
17158
        #[allow(clippy::unnecessary_cast)]
17159
0
        let layer_result = device_info
17160
0
            .customized_info
17161
0
            .borrow()
17162
0
            .hooks()
17163
0
            .get_pipeline_executable_properties_khr(
17164
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
17165
0
                if p_properties.is_null() {
17166
0
                    None
17167
                } else {
17168
0
                    Some(unsafe {
17169
0
                        std::slice::from_raw_parts_mut(
17170
0
                            p_properties,
17171
0
                            *unsafe { p_executable_count.as_ref() }.unwrap() as usize,
17172
0
                        )
17173
0
                    })
17174
                },
17175
            );
17176
0
        match layer_result {
17177
0
            LayerResult::Handled(res) => match res {
17178
0
                Ok(()) => vk::Result::SUCCESS,
17179
0
                Err(e) => e,
17180
            },
17181
            LayerResult::Unhandled => unsafe {
17182
0
                (dispatch_table.get_pipeline_executable_properties_khr)(
17183
0
                    device,
17184
0
                    p_pipeline_info,
17185
0
                    p_executable_count,
17186
0
                    p_properties,
17187
0
                )
17188
            },
17189
        }
17190
0
    }
17191
0
    extern "system" fn get_pipeline_executable_statistics_khr(
17192
0
        device: vk::Device,
17193
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
17194
0
        p_statistic_count: *mut u32,
17195
0
        p_statistics: *mut vk::PipelineExecutableStatisticKHR,
17196
0
    ) -> vk::Result {
17197
0
        let global = Self::instance();
17198
0
        // vkGetPipelineExecutableStatisticsKHR
17199
0
        let device_info = global.get_device_info(device).unwrap();
17200
0
        let dispatch_table = &device_info
17201
0
            .dispatch_table
17202
0
            .khr_pipeline_executable_properties;
17203
        #[allow(clippy::unnecessary_cast)]
17204
0
        let layer_result = device_info
17205
0
            .customized_info
17206
0
            .borrow()
17207
0
            .hooks()
17208
0
            .get_pipeline_executable_statistics_khr(
17209
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
17210
0
                if p_statistics.is_null() {
17211
0
                    None
17212
                } else {
17213
0
                    Some(unsafe {
17214
0
                        std::slice::from_raw_parts_mut(
17215
0
                            p_statistics,
17216
0
                            *unsafe { p_statistic_count.as_ref() }.unwrap() as usize,
17217
0
                        )
17218
0
                    })
17219
                },
17220
            );
17221
0
        match layer_result {
17222
0
            LayerResult::Handled(res) => match res {
17223
0
                Ok(()) => vk::Result::SUCCESS,
17224
0
                Err(e) => e,
17225
            },
17226
            LayerResult::Unhandled => unsafe {
17227
0
                (dispatch_table.get_pipeline_executable_statistics_khr)(
17228
0
                    device,
17229
0
                    p_executable_info,
17230
0
                    p_statistic_count,
17231
0
                    p_statistics,
17232
0
                )
17233
            },
17234
        }
17235
0
    }
17236
0
    extern "system" fn get_pipeline_executable_internal_representations_khr(
17237
0
        device: vk::Device,
17238
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
17239
0
        p_internal_representation_count: *mut u32,
17240
0
        p_internal_representations: *mut vk::PipelineExecutableInternalRepresentationKHR,
17241
0
    ) -> vk::Result {
17242
0
        let global = Self::instance();
17243
0
        // vkGetPipelineExecutableInternalRepresentationsKHR
17244
0
        let device_info = global.get_device_info(device).unwrap();
17245
0
        let dispatch_table = &device_info
17246
0
            .dispatch_table
17247
0
            .khr_pipeline_executable_properties;
17248
        #[allow(clippy::unnecessary_cast)]
17249
0
        let layer_result = device_info
17250
0
            .customized_info
17251
0
            .borrow()
17252
0
            .hooks()
17253
0
            .get_pipeline_executable_internal_representations_khr(
17254
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
17255
0
                if p_internal_representations.is_null() {
17256
0
                    None
17257
                } else {
17258
0
                    Some(unsafe {
17259
0
                        std::slice::from_raw_parts_mut(
17260
0
                            p_internal_representations,
17261
0
                            *unsafe { p_internal_representation_count.as_ref() }.unwrap() as usize,
17262
0
                        )
17263
0
                    })
17264
                },
17265
            );
17266
0
        match layer_result {
17267
0
            LayerResult::Handled(res) => match res {
17268
0
                Ok(()) => vk::Result::SUCCESS,
17269
0
                Err(e) => e,
17270
            },
17271
            LayerResult::Unhandled => unsafe {
17272
0
                (dispatch_table.get_pipeline_executable_internal_representations_khr)(
17273
0
                    device,
17274
0
                    p_executable_info,
17275
0
                    p_internal_representation_count,
17276
0
                    p_internal_representations,
17277
0
                )
17278
            },
17279
        }
17280
0
    }
17281
0
    extern "system" fn cmd_encode_video_khr(
17282
0
        command_buffer: vk::CommandBuffer,
17283
0
        p_encode_info: *const vk::VideoEncodeInfoKHR,
17284
0
    ) {
17285
0
        let global = Self::instance();
17286
0
        // vkCmdEncodeVideoKHR
17287
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17288
0
        let dispatch_table = &device_info.dispatch_table.khr_video_encode_queue;
17289
0
        let layer_result = device_info
17290
0
            .customized_info
17291
0
            .borrow()
17292
0
            .hooks()
17293
0
            .cmd_encode_video_khr(command_buffer, unsafe { p_encode_info.as_ref() }.unwrap());
17294
0
        match layer_result {
17295
0
            LayerResult::Handled(res) => res,
17296
            LayerResult::Unhandled => unsafe {
17297
0
                (dispatch_table.cmd_encode_video_khr)(command_buffer, p_encode_info)
17298
            },
17299
        }
17300
0
    }
17301
0
    extern "system" fn cmd_write_buffer_marker2_amd(
17302
0
        command_buffer: vk::CommandBuffer,
17303
0
        stage: vk::PipelineStageFlags2,
17304
0
        dst_buffer: vk::Buffer,
17305
0
        dst_offset: vk::DeviceSize,
17306
0
        marker: u32,
17307
0
    ) {
17308
0
        let global = Self::instance();
17309
0
        // vkCmdWriteBufferMarker2AMD
17310
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17311
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17312
0
        let layer_result = device_info
17313
0
            .customized_info
17314
0
            .borrow()
17315
0
            .hooks()
17316
0
            .cmd_write_buffer_marker2_amd(command_buffer, stage, dst_buffer, dst_offset, marker);
17317
0
        match layer_result {
17318
0
            LayerResult::Handled(res) => res,
17319
            LayerResult::Unhandled => unsafe {
17320
0
                (dispatch_table.cmd_write_buffer_marker2_amd)(
17321
0
                    command_buffer,
17322
0
                    stage,
17323
0
                    dst_buffer,
17324
0
                    dst_offset,
17325
0
                    marker,
17326
0
                )
17327
            },
17328
        }
17329
0
    }
17330
0
    extern "system" fn get_queue_checkpoint_data2_nv(
17331
0
        queue: vk::Queue,
17332
0
        p_checkpoint_data_count: *mut u32,
17333
0
        p_checkpoint_data: *mut vk::CheckpointData2NV,
17334
0
    ) {
17335
0
        let global = Self::instance();
17336
0
        // vkGetQueueCheckpointData2NV
17337
0
        let device_info = global.get_device_info(queue).unwrap();
17338
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17339
        #[allow(clippy::unnecessary_cast)]
17340
0
        let layer_result = device_info
17341
0
            .customized_info
17342
0
            .borrow()
17343
0
            .hooks()
17344
0
            .get_queue_checkpoint_data2_nv(
17345
0
                queue,
17346
0
                if p_checkpoint_data.is_null() {
17347
0
                    None
17348
                } else {
17349
0
                    Some(unsafe {
17350
0
                        std::slice::from_raw_parts_mut(
17351
0
                            p_checkpoint_data,
17352
0
                            *unsafe { p_checkpoint_data_count.as_ref() }.unwrap() as usize,
17353
0
                        )
17354
0
                    })
17355
                },
17356
            );
17357
0
        match layer_result {
17358
0
            LayerResult::Handled(res) => res,
17359
            LayerResult::Unhandled => unsafe {
17360
0
                (dispatch_table.get_queue_checkpoint_data2_nv)(
17361
0
                    queue,
17362
0
                    p_checkpoint_data_count,
17363
0
                    p_checkpoint_data,
17364
0
                )
17365
            },
17366
        }
17367
0
    }
17368
0
    extern "system" fn cmd_trace_rays_indirect2_khr(
17369
0
        command_buffer: vk::CommandBuffer,
17370
0
        indirect_device_address: vk::DeviceAddress,
17371
0
    ) {
17372
0
        let global = Self::instance();
17373
0
        // vkCmdTraceRaysIndirect2KHR
17374
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17375
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_maintenance1;
17376
0
        let layer_result = device_info
17377
0
            .customized_info
17378
0
            .borrow()
17379
0
            .hooks()
17380
0
            .cmd_trace_rays_indirect2_khr(command_buffer, indirect_device_address);
17381
0
        match layer_result {
17382
0
            LayerResult::Handled(res) => res,
17383
            LayerResult::Unhandled => unsafe {
17384
0
                (dispatch_table.cmd_trace_rays_indirect2_khr)(
17385
0
                    command_buffer,
17386
0
                    indirect_device_address,
17387
0
                )
17388
            },
17389
        }
17390
0
    }
17391
0
    extern "system" fn get_swapchain_gralloc_usage_android(
17392
0
        device: vk::Device,
17393
0
        format: vk::Format,
17394
0
        image_usage: vk::ImageUsageFlags,
17395
0
        gralloc_usage: *mut c_int,
17396
0
    ) -> vk::Result {
17397
0
        let global = Self::instance();
17398
0
        // vkGetSwapchainGrallocUsageANDROID
17399
0
        let device_info = global.get_device_info(device).unwrap();
17400
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17401
0
        let layer_result = device_info
17402
0
            .customized_info
17403
0
            .borrow()
17404
0
            .hooks()
17405
0
            .get_swapchain_gralloc_usage_android(format, image_usage);
17406
0
        match layer_result {
17407
0
            LayerResult::Handled(res) => match res {
17408
0
                Ok(res) => {
17409
0
                    *unsafe { gralloc_usage.as_mut() }.unwrap() = res;
17410
0
                    vk::Result::SUCCESS
17411
                }
17412
0
                Err(e) => e,
17413
            },
17414
            LayerResult::Unhandled => unsafe {
17415
0
                (dispatch_table.get_swapchain_gralloc_usage_android)(
17416
0
                    device,
17417
0
                    format,
17418
0
                    image_usage,
17419
0
                    gralloc_usage,
17420
0
                )
17421
            },
17422
        }
17423
0
    }
17424
0
    extern "system" fn acquire_image_android(
17425
0
        device: vk::Device,
17426
0
        image: vk::Image,
17427
0
        native_fence_fd: c_int,
17428
0
        semaphore: vk::Semaphore,
17429
0
        fence: vk::Fence,
17430
0
    ) -> vk::Result {
17431
0
        let global = Self::instance();
17432
0
        // vkAcquireImageANDROID
17433
0
        let device_info = global.get_device_info(device).unwrap();
17434
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17435
0
        let layer_result = device_info
17436
0
            .customized_info
17437
0
            .borrow()
17438
0
            .hooks()
17439
0
            .acquire_image_android(image, native_fence_fd, semaphore, fence);
17440
0
        match layer_result {
17441
0
            LayerResult::Handled(res) => match res {
17442
0
                Ok(()) => vk::Result::SUCCESS,
17443
0
                Err(e) => e,
17444
            },
17445
            LayerResult::Unhandled => unsafe {
17446
0
                (dispatch_table.acquire_image_android)(
17447
0
                    device,
17448
0
                    image,
17449
0
                    native_fence_fd,
17450
0
                    semaphore,
17451
0
                    fence,
17452
0
                )
17453
            },
17454
        }
17455
0
    }
17456
0
    extern "system" fn queue_signal_release_image_android(
17457
0
        queue: vk::Queue,
17458
0
        wait_semaphore_count: u32,
17459
0
        p_wait_semaphores: *const vk::Semaphore,
17460
0
        image: vk::Image,
17461
0
        p_native_fence_fd: *mut c_int,
17462
0
    ) -> vk::Result {
17463
0
        let global = Self::instance();
17464
0
        // vkQueueSignalReleaseImageANDROID
17465
0
        let device_info = global.get_device_info(queue).unwrap();
17466
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17467
0
        #[allow(clippy::unnecessary_cast)]
17468
0
        let layer_result = device_info
17469
0
            .customized_info
17470
0
            .borrow()
17471
0
            .hooks()
17472
0
            .queue_signal_release_image_android(
17473
0
                queue,
17474
0
                unsafe {
17475
0
                    std::slice::from_raw_parts(p_wait_semaphores, wait_semaphore_count as usize)
17476
0
                },
17477
0
                image,
17478
0
            );
17479
0
        match layer_result {
17480
0
            LayerResult::Handled(res) => match res {
17481
0
                Ok(res) => {
17482
0
                    *unsafe { p_native_fence_fd.as_mut() }.unwrap() = res;
17483
0
                    vk::Result::SUCCESS
17484
                }
17485
0
                Err(e) => e,
17486
            },
17487
            LayerResult::Unhandled => unsafe {
17488
0
                (dispatch_table.queue_signal_release_image_android)(
17489
0
                    queue,
17490
0
                    wait_semaphore_count,
17491
0
                    p_wait_semaphores,
17492
0
                    image,
17493
0
                    p_native_fence_fd,
17494
0
                )
17495
            },
17496
        }
17497
0
    }
17498
0
    extern "system" fn get_swapchain_gralloc_usage2_android(
17499
0
        device: vk::Device,
17500
0
        format: vk::Format,
17501
0
        image_usage: vk::ImageUsageFlags,
17502
0
        swapchain_image_usage: vk::SwapchainImageUsageFlagsANDROID,
17503
0
        gralloc_consumer_usage: *mut u64,
17504
0
        gralloc_producer_usage: *mut u64,
17505
0
    ) -> vk::Result {
17506
0
        let global = Self::instance();
17507
0
        // vkGetSwapchainGrallocUsage2ANDROID
17508
0
        let device_info = global.get_device_info(device).unwrap();
17509
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17510
0
        let layer_result = device_info
17511
0
            .customized_info
17512
0
            .borrow()
17513
0
            .hooks()
17514
0
            .get_swapchain_gralloc_usage2_android(
17515
0
                format,
17516
0
                image_usage,
17517
0
                swapchain_image_usage,
17518
0
                unsafe { gralloc_consumer_usage.as_mut() }.unwrap(),
17519
0
            );
17520
0
        match layer_result {
17521
0
            LayerResult::Handled(res) => match res {
17522
0
                Ok(res) => {
17523
0
                    *unsafe { gralloc_producer_usage.as_mut() }.unwrap() = res;
17524
0
                    vk::Result::SUCCESS
17525
                }
17526
0
                Err(e) => e,
17527
            },
17528
            LayerResult::Unhandled => unsafe {
17529
0
                (dispatch_table.get_swapchain_gralloc_usage2_android)(
17530
0
                    device,
17531
0
                    format,
17532
0
                    image_usage,
17533
0
                    swapchain_image_usage,
17534
0
                    gralloc_consumer_usage,
17535
0
                    gralloc_producer_usage,
17536
0
                )
17537
            },
17538
        }
17539
0
    }
17540
0
    extern "system" fn debug_marker_set_object_tag_ext(
17541
0
        device: vk::Device,
17542
0
        p_tag_info: *const vk::DebugMarkerObjectTagInfoEXT,
17543
0
    ) -> vk::Result {
17544
0
        let global = Self::instance();
17545
0
        // vkDebugMarkerSetObjectTagEXT
17546
0
        let device_info = global.get_device_info(device).unwrap();
17547
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17548
0
        let layer_result = device_info
17549
0
            .customized_info
17550
0
            .borrow()
17551
0
            .hooks()
17552
0
            .debug_marker_set_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
17553
0
        match layer_result {
17554
0
            LayerResult::Handled(res) => match res {
17555
0
                Ok(()) => vk::Result::SUCCESS,
17556
0
                Err(e) => e,
17557
            },
17558
            LayerResult::Unhandled => unsafe {
17559
0
                (dispatch_table.debug_marker_set_object_tag_ext)(device, p_tag_info)
17560
            },
17561
        }
17562
0
    }
17563
0
    extern "system" fn debug_marker_set_object_name_ext(
17564
0
        device: vk::Device,
17565
0
        p_name_info: *const vk::DebugMarkerObjectNameInfoEXT,
17566
0
    ) -> vk::Result {
17567
0
        let global = Self::instance();
17568
0
        // vkDebugMarkerSetObjectNameEXT
17569
0
        let device_info = global.get_device_info(device).unwrap();
17570
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17571
0
        let layer_result = device_info
17572
0
            .customized_info
17573
0
            .borrow()
17574
0
            .hooks()
17575
0
            .debug_marker_set_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
17576
0
        match layer_result {
17577
0
            LayerResult::Handled(res) => match res {
17578
0
                Ok(()) => vk::Result::SUCCESS,
17579
0
                Err(e) => e,
17580
            },
17581
            LayerResult::Unhandled => unsafe {
17582
0
                (dispatch_table.debug_marker_set_object_name_ext)(device, p_name_info)
17583
            },
17584
        }
17585
0
    }
17586
0
    extern "system" fn cmd_debug_marker_begin_ext(
17587
0
        command_buffer: vk::CommandBuffer,
17588
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17589
0
    ) {
17590
0
        let global = Self::instance();
17591
0
        // vkCmdDebugMarkerBeginEXT
17592
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17593
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17594
0
        let layer_result = device_info
17595
0
            .customized_info
17596
0
            .borrow()
17597
0
            .hooks()
17598
0
            .cmd_debug_marker_begin_ext(command_buffer, unsafe { p_marker_info.as_ref() }.unwrap());
17599
0
        match layer_result {
17600
0
            LayerResult::Handled(res) => res,
17601
            LayerResult::Unhandled => unsafe {
17602
0
                (dispatch_table.cmd_debug_marker_begin_ext)(command_buffer, p_marker_info)
17603
            },
17604
        }
17605
0
    }
17606
0
    extern "system" fn cmd_debug_marker_end_ext(command_buffer: vk::CommandBuffer) {
17607
0
        let global = Self::instance();
17608
0
        // vkCmdDebugMarkerEndEXT
17609
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17610
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17611
0
        let layer_result = device_info
17612
0
            .customized_info
17613
0
            .borrow()
17614
0
            .hooks()
17615
0
            .cmd_debug_marker_end_ext(command_buffer);
17616
0
        match layer_result {
17617
0
            LayerResult::Handled(res) => res,
17618
            LayerResult::Unhandled => unsafe {
17619
0
                (dispatch_table.cmd_debug_marker_end_ext)(command_buffer)
17620
            },
17621
        }
17622
0
    }
17623
0
    extern "system" fn cmd_debug_marker_insert_ext(
17624
0
        command_buffer: vk::CommandBuffer,
17625
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17626
0
    ) {
17627
0
        let global = Self::instance();
17628
0
        // vkCmdDebugMarkerInsertEXT
17629
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17630
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17631
0
        let layer_result = device_info
17632
0
            .customized_info
17633
0
            .borrow()
17634
0
            .hooks()
17635
0
            .cmd_debug_marker_insert_ext(
17636
0
                command_buffer,
17637
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
17638
0
            );
17639
0
        match layer_result {
17640
0
            LayerResult::Handled(res) => res,
17641
            LayerResult::Unhandled => unsafe {
17642
0
                (dispatch_table.cmd_debug_marker_insert_ext)(command_buffer, p_marker_info)
17643
            },
17644
        }
17645
0
    }
17646
0
    extern "system" fn cmd_bind_transform_feedback_buffers_ext(
17647
0
        command_buffer: vk::CommandBuffer,
17648
0
        first_binding: u32,
17649
0
        binding_count: u32,
17650
0
        p_buffers: *const vk::Buffer,
17651
0
        p_offsets: *const vk::DeviceSize,
17652
0
        p_sizes: *const vk::DeviceSize,
17653
0
    ) {
17654
0
        let global = Self::instance();
17655
0
        // vkCmdBindTransformFeedbackBuffersEXT
17656
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17657
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17658
        #[allow(clippy::unnecessary_cast)]
17659
        #[allow(clippy::unnecessary_cast)]
17660
        #[allow(clippy::unnecessary_cast)]
17661
0
        let layer_result = device_info
17662
0
            .customized_info
17663
0
            .borrow()
17664
0
            .hooks()
17665
0
            .cmd_bind_transform_feedback_buffers_ext(
17666
0
                command_buffer,
17667
0
                first_binding,
17668
0
                unsafe { std::slice::from_raw_parts(p_buffers, binding_count as usize) },
17669
0
                unsafe { std::slice::from_raw_parts(p_offsets, binding_count as usize) },
17670
0
                if p_sizes.is_null() {
17671
0
                    None
17672
                } else {
17673
0
                    Some(unsafe { std::slice::from_raw_parts(p_sizes, binding_count as usize) })
17674
                },
17675
            );
17676
0
        match layer_result {
17677
0
            LayerResult::Handled(res) => res,
17678
            LayerResult::Unhandled => unsafe {
17679
0
                (dispatch_table.cmd_bind_transform_feedback_buffers_ext)(
17680
0
                    command_buffer,
17681
0
                    first_binding,
17682
0
                    binding_count,
17683
0
                    p_buffers,
17684
0
                    p_offsets,
17685
0
                    p_sizes,
17686
0
                )
17687
            },
17688
        }
17689
0
    }
17690
0
    extern "system" fn cmd_begin_transform_feedback_ext(
17691
0
        command_buffer: vk::CommandBuffer,
17692
0
        first_counter_buffer: u32,
17693
0
        counter_buffer_count: u32,
17694
0
        p_counter_buffers: *const vk::Buffer,
17695
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17696
0
    ) {
17697
0
        let global = Self::instance();
17698
0
        // vkCmdBeginTransformFeedbackEXT
17699
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17700
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17701
        #[allow(clippy::unnecessary_cast)]
17702
        #[allow(clippy::unnecessary_cast)]
17703
0
        let layer_result = device_info
17704
0
            .customized_info
17705
0
            .borrow()
17706
0
            .hooks()
17707
0
            .cmd_begin_transform_feedback_ext(
17708
0
                command_buffer,
17709
0
                first_counter_buffer,
17710
0
                unsafe {
17711
0
                    std::slice::from_raw_parts(p_counter_buffers, counter_buffer_count as usize)
17712
0
                },
17713
0
                if p_counter_buffer_offsets.is_null() {
17714
0
                    None
17715
                } else {
17716
0
                    Some(unsafe {
17717
0
                        std::slice::from_raw_parts(
17718
0
                            p_counter_buffer_offsets,
17719
0
                            counter_buffer_count as usize,
17720
0
                        )
17721
0
                    })
17722
                },
17723
            );
17724
0
        match layer_result {
17725
0
            LayerResult::Handled(res) => res,
17726
            LayerResult::Unhandled => unsafe {
17727
0
                (dispatch_table.cmd_begin_transform_feedback_ext)(
17728
0
                    command_buffer,
17729
0
                    first_counter_buffer,
17730
0
                    counter_buffer_count,
17731
0
                    p_counter_buffers,
17732
0
                    p_counter_buffer_offsets,
17733
0
                )
17734
            },
17735
        }
17736
0
    }
17737
0
    extern "system" fn cmd_end_transform_feedback_ext(
17738
0
        command_buffer: vk::CommandBuffer,
17739
0
        first_counter_buffer: u32,
17740
0
        counter_buffer_count: u32,
17741
0
        p_counter_buffers: *const vk::Buffer,
17742
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17743
0
    ) {
17744
0
        let global = Self::instance();
17745
0
        // vkCmdEndTransformFeedbackEXT
17746
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17747
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17748
        #[allow(clippy::unnecessary_cast)]
17749
        #[allow(clippy::unnecessary_cast)]
17750
0
        let layer_result = device_info
17751
0
            .customized_info
17752
0
            .borrow()
17753
0
            .hooks()
17754
0
            .cmd_end_transform_feedback_ext(
17755
0
                command_buffer,
17756
0
                first_counter_buffer,
17757
0
                unsafe {
17758
0
                    std::slice::from_raw_parts(p_counter_buffers, counter_buffer_count as usize)
17759
0
                },
17760
0
                if p_counter_buffer_offsets.is_null() {
17761
0
                    None
17762
                } else {
17763
0
                    Some(unsafe {
17764
0
                        std::slice::from_raw_parts(
17765
0
                            p_counter_buffer_offsets,
17766
0
                            counter_buffer_count as usize,
17767
0
                        )
17768
0
                    })
17769
                },
17770
            );
17771
0
        match layer_result {
17772
0
            LayerResult::Handled(res) => res,
17773
            LayerResult::Unhandled => unsafe {
17774
0
                (dispatch_table.cmd_end_transform_feedback_ext)(
17775
0
                    command_buffer,
17776
0
                    first_counter_buffer,
17777
0
                    counter_buffer_count,
17778
0
                    p_counter_buffers,
17779
0
                    p_counter_buffer_offsets,
17780
0
                )
17781
            },
17782
        }
17783
0
    }
17784
0
    extern "system" fn cmd_begin_query_indexed_ext(
17785
0
        command_buffer: vk::CommandBuffer,
17786
0
        query_pool: vk::QueryPool,
17787
0
        query: u32,
17788
0
        flags: vk::QueryControlFlags,
17789
0
        index: u32,
17790
0
    ) {
17791
0
        let global = Self::instance();
17792
0
        // vkCmdBeginQueryIndexedEXT
17793
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17794
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17795
0
        let layer_result = device_info
17796
0
            .customized_info
17797
0
            .borrow()
17798
0
            .hooks()
17799
0
            .cmd_begin_query_indexed_ext(command_buffer, query_pool, query, flags, index);
17800
0
        match layer_result {
17801
0
            LayerResult::Handled(res) => res,
17802
            LayerResult::Unhandled => unsafe {
17803
0
                (dispatch_table.cmd_begin_query_indexed_ext)(
17804
0
                    command_buffer,
17805
0
                    query_pool,
17806
0
                    query,
17807
0
                    flags,
17808
0
                    index,
17809
0
                )
17810
            },
17811
        }
17812
0
    }
17813
0
    extern "system" fn cmd_end_query_indexed_ext(
17814
0
        command_buffer: vk::CommandBuffer,
17815
0
        query_pool: vk::QueryPool,
17816
0
        query: u32,
17817
0
        index: u32,
17818
0
    ) {
17819
0
        let global = Self::instance();
17820
0
        // vkCmdEndQueryIndexedEXT
17821
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17822
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17823
0
        let layer_result = device_info
17824
0
            .customized_info
17825
0
            .borrow()
17826
0
            .hooks()
17827
0
            .cmd_end_query_indexed_ext(command_buffer, query_pool, query, index);
17828
0
        match layer_result {
17829
0
            LayerResult::Handled(res) => res,
17830
            LayerResult::Unhandled => unsafe {
17831
0
                (dispatch_table.cmd_end_query_indexed_ext)(command_buffer, query_pool, query, index)
17832
            },
17833
        }
17834
0
    }
17835
0
    extern "system" fn cmd_draw_indirect_byte_count_ext(
17836
0
        command_buffer: vk::CommandBuffer,
17837
0
        instance_count: u32,
17838
0
        first_instance: u32,
17839
0
        counter_buffer: vk::Buffer,
17840
0
        counter_buffer_offset: vk::DeviceSize,
17841
0
        counter_offset: u32,
17842
0
        vertex_stride: u32,
17843
0
    ) {
17844
0
        let global = Self::instance();
17845
0
        // vkCmdDrawIndirectByteCountEXT
17846
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17847
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17848
0
        let layer_result = device_info
17849
0
            .customized_info
17850
0
            .borrow()
17851
0
            .hooks()
17852
0
            .cmd_draw_indirect_byte_count_ext(
17853
0
                command_buffer,
17854
0
                instance_count,
17855
0
                first_instance,
17856
0
                counter_buffer,
17857
0
                counter_buffer_offset,
17858
0
                counter_offset,
17859
0
                vertex_stride,
17860
0
            );
17861
0
        match layer_result {
17862
0
            LayerResult::Handled(res) => res,
17863
            LayerResult::Unhandled => unsafe {
17864
0
                (dispatch_table.cmd_draw_indirect_byte_count_ext)(
17865
0
                    command_buffer,
17866
0
                    instance_count,
17867
0
                    first_instance,
17868
0
                    counter_buffer,
17869
0
                    counter_buffer_offset,
17870
0
                    counter_offset,
17871
0
                    vertex_stride,
17872
0
                )
17873
            },
17874
        }
17875
0
    }
17876
0
    extern "system" fn create_cu_module_nvx(
17877
0
        device: vk::Device,
17878
0
        p_create_info: *const vk::CuModuleCreateInfoNVX,
17879
0
        p_allocator: *const vk::AllocationCallbacks,
17880
0
        p_module: *mut vk::CuModuleNVX,
17881
0
    ) -> vk::Result {
17882
0
        let global = Self::instance();
17883
0
        // vkCreateCuModuleNVX
17884
0
        let device_info = global.get_device_info(device).unwrap();
17885
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17886
0
        let layer_result = device_info
17887
0
            .customized_info
17888
0
            .borrow()
17889
0
            .hooks()
17890
0
            .create_cu_module_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17891
0
                p_allocator.as_ref()
17892
0
            });
17893
0
        match layer_result {
17894
0
            LayerResult::Handled(res) => match res {
17895
0
                Ok(res) => {
17896
0
                    *unsafe { p_module.as_mut() }.unwrap() = res;
17897
0
                    vk::Result::SUCCESS
17898
                }
17899
0
                Err(e) => e,
17900
            },
17901
            LayerResult::Unhandled => unsafe {
17902
0
                (dispatch_table.create_cu_module_nvx)(device, p_create_info, p_allocator, p_module)
17903
            },
17904
        }
17905
0
    }
17906
0
    extern "system" fn create_cu_function_nvx(
17907
0
        device: vk::Device,
17908
0
        p_create_info: *const vk::CuFunctionCreateInfoNVX,
17909
0
        p_allocator: *const vk::AllocationCallbacks,
17910
0
        p_function: *mut vk::CuFunctionNVX,
17911
0
    ) -> vk::Result {
17912
0
        let global = Self::instance();
17913
0
        // vkCreateCuFunctionNVX
17914
0
        let device_info = global.get_device_info(device).unwrap();
17915
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17916
0
        let layer_result = device_info
17917
0
            .customized_info
17918
0
            .borrow()
17919
0
            .hooks()
17920
0
            .create_cu_function_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17921
0
                p_allocator.as_ref()
17922
0
            });
17923
0
        match layer_result {
17924
0
            LayerResult::Handled(res) => match res {
17925
0
                Ok(res) => {
17926
0
                    *unsafe { p_function.as_mut() }.unwrap() = res;
17927
0
                    vk::Result::SUCCESS
17928
                }
17929
0
                Err(e) => e,
17930
            },
17931
            LayerResult::Unhandled => unsafe {
17932
0
                (dispatch_table.create_cu_function_nvx)(
17933
0
                    device,
17934
0
                    p_create_info,
17935
0
                    p_allocator,
17936
0
                    p_function,
17937
0
                )
17938
            },
17939
        }
17940
0
    }
17941
0
    extern "system" fn destroy_cu_module_nvx(
17942
0
        device: vk::Device,
17943
0
        module: vk::CuModuleNVX,
17944
0
        p_allocator: *const vk::AllocationCallbacks,
17945
0
    ) {
17946
0
        let global = Self::instance();
17947
0
        // vkDestroyCuModuleNVX
17948
0
        let device_info = global.get_device_info(device).unwrap();
17949
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17950
0
        let layer_result = device_info
17951
0
            .customized_info
17952
0
            .borrow()
17953
0
            .hooks()
17954
0
            .destroy_cu_module_nvx(module, unsafe { p_allocator.as_ref() });
17955
0
        match layer_result {
17956
0
            LayerResult::Handled(res) => res,
17957
            LayerResult::Unhandled => unsafe {
17958
0
                (dispatch_table.destroy_cu_module_nvx)(device, module, p_allocator)
17959
            },
17960
        }
17961
0
    }
17962
0
    extern "system" fn destroy_cu_function_nvx(
17963
0
        device: vk::Device,
17964
0
        function: vk::CuFunctionNVX,
17965
0
        p_allocator: *const vk::AllocationCallbacks,
17966
0
    ) {
17967
0
        let global = Self::instance();
17968
0
        // vkDestroyCuFunctionNVX
17969
0
        let device_info = global.get_device_info(device).unwrap();
17970
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17971
0
        let layer_result = device_info
17972
0
            .customized_info
17973
0
            .borrow()
17974
0
            .hooks()
17975
0
            .destroy_cu_function_nvx(function, unsafe { p_allocator.as_ref() });
17976
0
        match layer_result {
17977
0
            LayerResult::Handled(res) => res,
17978
            LayerResult::Unhandled => unsafe {
17979
0
                (dispatch_table.destroy_cu_function_nvx)(device, function, p_allocator)
17980
            },
17981
        }
17982
0
    }
17983
0
    extern "system" fn cmd_cu_launch_kernel_nvx(
17984
0
        command_buffer: vk::CommandBuffer,
17985
0
        p_launch_info: *const vk::CuLaunchInfoNVX,
17986
0
    ) {
17987
0
        let global = Self::instance();
17988
0
        // vkCmdCuLaunchKernelNVX
17989
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17990
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17991
0
        let layer_result = device_info
17992
0
            .customized_info
17993
0
            .borrow()
17994
0
            .hooks()
17995
0
            .cmd_cu_launch_kernel_nvx(command_buffer, unsafe { p_launch_info.as_ref() }.unwrap());
17996
0
        match layer_result {
17997
0
            LayerResult::Handled(res) => res,
17998
            LayerResult::Unhandled => unsafe {
17999
0
                (dispatch_table.cmd_cu_launch_kernel_nvx)(command_buffer, p_launch_info)
18000
            },
18001
        }
18002
0
    }
18003
0
    extern "system" fn get_image_view_handle_nvx(
18004
0
        device: vk::Device,
18005
0
        p_info: *const vk::ImageViewHandleInfoNVX,
18006
0
    ) -> u32 {
18007
0
        let global = Self::instance();
18008
0
        // vkGetImageViewHandleNVX
18009
0
        let device_info = global.get_device_info(device).unwrap();
18010
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
18011
0
        let layer_result = device_info
18012
0
            .customized_info
18013
0
            .borrow()
18014
0
            .hooks()
18015
0
            .get_image_view_handle_nvx(unsafe { p_info.as_ref() }.unwrap());
18016
0
        match layer_result {
18017
0
            LayerResult::Handled(res) => res,
18018
            LayerResult::Unhandled => unsafe {
18019
0
                (dispatch_table.get_image_view_handle_nvx)(device, p_info)
18020
            },
18021
        }
18022
0
    }
18023
0
    extern "system" fn get_image_view_address_nvx(
18024
0
        device: vk::Device,
18025
0
        image_view: vk::ImageView,
18026
0
        p_properties: *mut vk::ImageViewAddressPropertiesNVX,
18027
0
    ) -> vk::Result {
18028
0
        let global = Self::instance();
18029
0
        // vkGetImageViewAddressNVX
18030
0
        let device_info = global.get_device_info(device).unwrap();
18031
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
18032
0
        let layer_result = device_info
18033
0
            .customized_info
18034
0
            .borrow()
18035
0
            .hooks()
18036
0
            .get_image_view_address_nvx(image_view, unsafe { p_properties.as_mut() }.unwrap());
18037
0
        match layer_result {
18038
0
            LayerResult::Handled(res) => match res {
18039
0
                Ok(()) => vk::Result::SUCCESS,
18040
0
                Err(e) => e,
18041
            },
18042
            LayerResult::Unhandled => unsafe {
18043
0
                (dispatch_table.get_image_view_address_nvx)(device, image_view, p_properties)
18044
            },
18045
        }
18046
0
    }
18047
0
    extern "system" fn get_shader_info_amd(
18048
0
        device: vk::Device,
18049
0
        pipeline: vk::Pipeline,
18050
0
        shader_stage: vk::ShaderStageFlags,
18051
0
        info_type: vk::ShaderInfoTypeAMD,
18052
0
        p_info_size: *mut usize,
18053
0
        p_info: *mut c_void,
18054
0
    ) -> vk::Result {
18055
0
        let global = Self::instance();
18056
0
        // vkGetShaderInfoAMD
18057
0
        let device_info = global.get_device_info(device).unwrap();
18058
0
        let dispatch_table = &device_info.dispatch_table.amd_shader_info;
18059
0
        let layer_result = device_info
18060
0
            .customized_info
18061
0
            .borrow()
18062
0
            .hooks()
18063
0
            .get_shader_info_amd(pipeline, shader_stage, info_type);
18064
0
        match layer_result {
18065
0
            LayerResult::Handled(res) => match res {
18066
0
                Ok(res) => {
18067
0
                    let p_info = p_info as *mut u8;
18068
0
                    unsafe { fill_vk_out_array(&res, NonNull::new(p_info_size).unwrap(), p_info) }
18069
                }
18070
0
                Err(e) => e,
18071
            },
18072
            LayerResult::Unhandled => unsafe {
18073
0
                (dispatch_table.get_shader_info_amd)(
18074
0
                    device,
18075
0
                    pipeline,
18076
0
                    shader_stage,
18077
0
                    info_type,
18078
0
                    p_info_size,
18079
0
                    p_info,
18080
0
                )
18081
            },
18082
        }
18083
0
    }
18084
0
    extern "system" fn get_memory_win32_handle_nv(
18085
0
        device: vk::Device,
18086
0
        memory: vk::DeviceMemory,
18087
0
        handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
18088
0
        p_handle: *mut vk::HANDLE,
18089
0
    ) -> vk::Result {
18090
0
        let global = Self::instance();
18091
0
        // vkGetMemoryWin32HandleNV
18092
0
        let device_info = global.get_device_info(device).unwrap();
18093
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_win32;
18094
0
        let layer_result = device_info
18095
0
            .customized_info
18096
0
            .borrow()
18097
0
            .hooks()
18098
0
            .get_memory_win32_handle_nv(memory, handle_type);
18099
0
        match layer_result {
18100
0
            LayerResult::Handled(res) => match res {
18101
0
                Ok(res) => {
18102
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
18103
0
                    vk::Result::SUCCESS
18104
                }
18105
0
                Err(e) => e,
18106
            },
18107
            LayerResult::Unhandled => unsafe {
18108
0
                (dispatch_table.get_memory_win32_handle_nv)(device, memory, handle_type, p_handle)
18109
            },
18110
        }
18111
0
    }
18112
0
    extern "system" fn cmd_begin_conditional_rendering_ext(
18113
0
        command_buffer: vk::CommandBuffer,
18114
0
        p_conditional_rendering_begin: *const vk::ConditionalRenderingBeginInfoEXT,
18115
0
    ) {
18116
0
        let global = Self::instance();
18117
0
        // vkCmdBeginConditionalRenderingEXT
18118
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18119
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
18120
0
        let layer_result = device_info
18121
0
            .customized_info
18122
0
            .borrow()
18123
0
            .hooks()
18124
0
            .cmd_begin_conditional_rendering_ext(
18125
0
                command_buffer,
18126
0
                unsafe { p_conditional_rendering_begin.as_ref() }.unwrap(),
18127
0
            );
18128
0
        match layer_result {
18129
0
            LayerResult::Handled(res) => res,
18130
            LayerResult::Unhandled => unsafe {
18131
0
                (dispatch_table.cmd_begin_conditional_rendering_ext)(
18132
0
                    command_buffer,
18133
0
                    p_conditional_rendering_begin,
18134
0
                )
18135
            },
18136
        }
18137
0
    }
18138
0
    extern "system" fn cmd_end_conditional_rendering_ext(command_buffer: vk::CommandBuffer) {
18139
0
        let global = Self::instance();
18140
0
        // vkCmdEndConditionalRenderingEXT
18141
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18142
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
18143
0
        let layer_result = device_info
18144
0
            .customized_info
18145
0
            .borrow()
18146
0
            .hooks()
18147
0
            .cmd_end_conditional_rendering_ext(command_buffer);
18148
0
        match layer_result {
18149
0
            LayerResult::Handled(res) => res,
18150
            LayerResult::Unhandled => unsafe {
18151
0
                (dispatch_table.cmd_end_conditional_rendering_ext)(command_buffer)
18152
            },
18153
        }
18154
0
    }
18155
0
    extern "system" fn cmd_set_viewport_w_scaling_nv(
18156
0
        command_buffer: vk::CommandBuffer,
18157
0
        first_viewport: u32,
18158
0
        viewport_count: u32,
18159
0
        p_viewport_w_scalings: *const vk::ViewportWScalingNV,
18160
0
    ) {
18161
0
        let global = Self::instance();
18162
0
        // vkCmdSetViewportWScalingNV
18163
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18164
0
        let dispatch_table = &device_info.dispatch_table.nv_clip_space_w_scaling;
18165
0
        #[allow(clippy::unnecessary_cast)]
18166
0
        let layer_result = device_info
18167
0
            .customized_info
18168
0
            .borrow()
18169
0
            .hooks()
18170
0
            .cmd_set_viewport_w_scaling_nv(command_buffer, first_viewport, unsafe {
18171
0
                std::slice::from_raw_parts(p_viewport_w_scalings, viewport_count as usize)
18172
0
            });
18173
0
        match layer_result {
18174
0
            LayerResult::Handled(res) => res,
18175
            LayerResult::Unhandled => unsafe {
18176
0
                (dispatch_table.cmd_set_viewport_w_scaling_nv)(
18177
0
                    command_buffer,
18178
0
                    first_viewport,
18179
0
                    viewport_count,
18180
0
                    p_viewport_w_scalings,
18181
0
                )
18182
            },
18183
        }
18184
0
    }
18185
0
    extern "system" fn display_power_control_ext(
18186
0
        device: vk::Device,
18187
0
        display: vk::DisplayKHR,
18188
0
        p_display_power_info: *const vk::DisplayPowerInfoEXT,
18189
0
    ) -> vk::Result {
18190
0
        let global = Self::instance();
18191
0
        // vkDisplayPowerControlEXT
18192
0
        let device_info = global.get_device_info(device).unwrap();
18193
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
18194
0
        let layer_result = device_info
18195
0
            .customized_info
18196
0
            .borrow()
18197
0
            .hooks()
18198
0
            .display_power_control_ext(display, unsafe { p_display_power_info.as_ref() }.unwrap());
18199
0
        match layer_result {
18200
0
            LayerResult::Handled(res) => match res {
18201
0
                Ok(()) => vk::Result::SUCCESS,
18202
0
                Err(e) => e,
18203
            },
18204
            LayerResult::Unhandled => unsafe {
18205
0
                (dispatch_table.display_power_control_ext)(device, display, p_display_power_info)
18206
            },
18207
        }
18208
0
    }
18209
0
    extern "system" fn register_device_event_ext(
18210
0
        device: vk::Device,
18211
0
        p_device_event_info: *const vk::DeviceEventInfoEXT,
18212
0
        p_allocator: *const vk::AllocationCallbacks,
18213
0
        p_fence: *mut vk::Fence,
18214
0
    ) -> vk::Result {
18215
0
        let global = Self::instance();
18216
0
        // vkRegisterDeviceEventEXT
18217
0
        let device_info = global.get_device_info(device).unwrap();
18218
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
18219
0
        let layer_result = device_info
18220
0
            .customized_info
18221
0
            .borrow()
18222
0
            .hooks()
18223
0
            .register_device_event_ext(unsafe { p_device_event_info.as_ref() }.unwrap(), unsafe {
18224
0
                p_allocator.as_ref()
18225
0
            });
18226
0
        match layer_result {
18227
0
            LayerResult::Handled(res) => match res {
18228
0
                Ok(res) => {
18229
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
18230
0
                    vk::Result::SUCCESS
18231
                }
18232
0
                Err(e) => e,
18233
            },
18234
            LayerResult::Unhandled => unsafe {
18235
0
                (dispatch_table.register_device_event_ext)(
18236
0
                    device,
18237
0
                    p_device_event_info,
18238
0
                    p_allocator,
18239
0
                    p_fence,
18240
0
                )
18241
            },
18242
        }
18243
0
    }
18244
0
    extern "system" fn register_display_event_ext(
18245
0
        device: vk::Device,
18246
0
        display: vk::DisplayKHR,
18247
0
        p_display_event_info: *const vk::DisplayEventInfoEXT,
18248
0
        p_allocator: *const vk::AllocationCallbacks,
18249
0
        p_fence: *mut vk::Fence,
18250
0
    ) -> vk::Result {
18251
0
        let global = Self::instance();
18252
0
        // vkRegisterDisplayEventEXT
18253
0
        let device_info = global.get_device_info(device).unwrap();
18254
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
18255
0
        let layer_result = device_info
18256
0
            .customized_info
18257
0
            .borrow()
18258
0
            .hooks()
18259
0
            .register_display_event_ext(
18260
0
                display,
18261
0
                unsafe { p_display_event_info.as_ref() }.unwrap(),
18262
0
                unsafe { p_allocator.as_ref() },
18263
0
            );
18264
0
        match layer_result {
18265
0
            LayerResult::Handled(res) => match res {
18266
0
                Ok(res) => {
18267
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
18268
0
                    vk::Result::SUCCESS
18269
                }
18270
0
                Err(e) => e,
18271
            },
18272
            LayerResult::Unhandled => unsafe {
18273
0
                (dispatch_table.register_display_event_ext)(
18274
0
                    device,
18275
0
                    display,
18276
0
                    p_display_event_info,
18277
0
                    p_allocator,
18278
0
                    p_fence,
18279
0
                )
18280
            },
18281
        }
18282
0
    }
18283
0
    extern "system" fn get_swapchain_counter_ext(
18284
0
        device: vk::Device,
18285
0
        swapchain: vk::SwapchainKHR,
18286
0
        counter: vk::SurfaceCounterFlagsEXT,
18287
0
        p_counter_value: *mut u64,
18288
0
    ) -> vk::Result {
18289
0
        let global = Self::instance();
18290
0
        // vkGetSwapchainCounterEXT
18291
0
        let device_info = global.get_device_info(device).unwrap();
18292
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
18293
0
        let layer_result = device_info
18294
0
            .customized_info
18295
0
            .borrow()
18296
0
            .hooks()
18297
0
            .get_swapchain_counter_ext(swapchain, counter);
18298
0
        match layer_result {
18299
0
            LayerResult::Handled(res) => match res {
18300
0
                Ok(res) => {
18301
0
                    *unsafe { p_counter_value.as_mut() }.unwrap() = res;
18302
0
                    vk::Result::SUCCESS
18303
                }
18304
0
                Err(e) => e,
18305
            },
18306
            LayerResult::Unhandled => unsafe {
18307
0
                (dispatch_table.get_swapchain_counter_ext)(
18308
0
                    device,
18309
0
                    swapchain,
18310
0
                    counter,
18311
0
                    p_counter_value,
18312
0
                )
18313
            },
18314
        }
18315
0
    }
18316
0
    extern "system" fn get_refresh_cycle_duration_google(
18317
0
        device: vk::Device,
18318
0
        swapchain: vk::SwapchainKHR,
18319
0
        p_display_timing_properties: *mut vk::RefreshCycleDurationGOOGLE,
18320
0
    ) -> vk::Result {
18321
0
        let global = Self::instance();
18322
0
        // vkGetRefreshCycleDurationGOOGLE
18323
0
        let device_info = global.get_device_info(device).unwrap();
18324
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18325
0
        let layer_result = device_info
18326
0
            .customized_info
18327
0
            .borrow()
18328
0
            .hooks()
18329
0
            .get_refresh_cycle_duration_google(
18330
0
                swapchain,
18331
0
                unsafe { p_display_timing_properties.as_mut() }.unwrap(),
18332
0
            );
18333
0
        match layer_result {
18334
0
            LayerResult::Handled(res) => match res {
18335
0
                Ok(()) => vk::Result::SUCCESS,
18336
0
                Err(e) => e,
18337
            },
18338
            LayerResult::Unhandled => unsafe {
18339
0
                (dispatch_table.get_refresh_cycle_duration_google)(
18340
0
                    device,
18341
0
                    swapchain,
18342
0
                    p_display_timing_properties,
18343
0
                )
18344
            },
18345
        }
18346
0
    }
18347
0
    extern "system" fn get_past_presentation_timing_google(
18348
0
        device: vk::Device,
18349
0
        swapchain: vk::SwapchainKHR,
18350
0
        p_presentation_timing_count: *mut u32,
18351
0
        p_presentation_timings: *mut vk::PastPresentationTimingGOOGLE,
18352
0
    ) -> vk::Result {
18353
0
        let global = Self::instance();
18354
0
        // vkGetPastPresentationTimingGOOGLE
18355
0
        let device_info = global.get_device_info(device).unwrap();
18356
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18357
        #[allow(clippy::unnecessary_cast)]
18358
0
        let layer_result = device_info
18359
0
            .customized_info
18360
0
            .borrow()
18361
0
            .hooks()
18362
0
            .get_past_presentation_timing_google(
18363
0
                swapchain,
18364
0
                if p_presentation_timings.is_null() {
18365
0
                    None
18366
                } else {
18367
0
                    Some(unsafe {
18368
0
                        std::slice::from_raw_parts_mut(
18369
0
                            p_presentation_timings,
18370
0
                            *unsafe { p_presentation_timing_count.as_ref() }.unwrap() as usize,
18371
0
                        )
18372
0
                    })
18373
                },
18374
            );
18375
0
        match layer_result {
18376
0
            LayerResult::Handled(res) => match res {
18377
0
                Ok(()) => vk::Result::SUCCESS,
18378
0
                Err(e) => e,
18379
            },
18380
            LayerResult::Unhandled => unsafe {
18381
0
                (dispatch_table.get_past_presentation_timing_google)(
18382
0
                    device,
18383
0
                    swapchain,
18384
0
                    p_presentation_timing_count,
18385
0
                    p_presentation_timings,
18386
0
                )
18387
            },
18388
        }
18389
0
    }
18390
0
    extern "system" fn cmd_set_discard_rectangle_ext(
18391
0
        command_buffer: vk::CommandBuffer,
18392
0
        first_discard_rectangle: u32,
18393
0
        discard_rectangle_count: u32,
18394
0
        p_discard_rectangles: *const vk::Rect2D,
18395
0
    ) {
18396
0
        let global = Self::instance();
18397
0
        // vkCmdSetDiscardRectangleEXT
18398
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18399
0
        let dispatch_table = &device_info.dispatch_table.ext_discard_rectangles;
18400
0
        #[allow(clippy::unnecessary_cast)]
18401
0
        let layer_result = device_info
18402
0
            .customized_info
18403
0
            .borrow()
18404
0
            .hooks()
18405
0
            .cmd_set_discard_rectangle_ext(command_buffer, first_discard_rectangle, unsafe {
18406
0
                std::slice::from_raw_parts(p_discard_rectangles, discard_rectangle_count as usize)
18407
0
            });
18408
0
        match layer_result {
18409
0
            LayerResult::Handled(res) => res,
18410
            LayerResult::Unhandled => unsafe {
18411
0
                (dispatch_table.cmd_set_discard_rectangle_ext)(
18412
0
                    command_buffer,
18413
0
                    first_discard_rectangle,
18414
0
                    discard_rectangle_count,
18415
0
                    p_discard_rectangles,
18416
0
                )
18417
            },
18418
        }
18419
0
    }
18420
0
    extern "system" fn set_hdr_metadata_ext(
18421
0
        device: vk::Device,
18422
0
        swapchain_count: u32,
18423
0
        p_swapchains: *const vk::SwapchainKHR,
18424
0
        p_metadata: *const vk::HdrMetadataEXT,
18425
0
    ) {
18426
0
        let global = Self::instance();
18427
0
        // vkSetHdrMetadataEXT
18428
0
        let device_info = global.get_device_info(device).unwrap();
18429
0
        let dispatch_table = &device_info.dispatch_table.ext_hdr_metadata;
18430
0
        #[allow(clippy::unnecessary_cast)]
18431
0
        #[allow(clippy::unnecessary_cast)]
18432
0
        let layer_result = device_info
18433
0
            .customized_info
18434
0
            .borrow()
18435
0
            .hooks()
18436
0
            .set_hdr_metadata_ext(
18437
0
                unsafe { std::slice::from_raw_parts(p_swapchains, swapchain_count as usize) },
18438
0
                unsafe { std::slice::from_raw_parts(p_metadata, swapchain_count as usize) },
18439
0
            );
18440
0
        match layer_result {
18441
0
            LayerResult::Handled(res) => res,
18442
            LayerResult::Unhandled => unsafe {
18443
0
                (dispatch_table.set_hdr_metadata_ext)(
18444
0
                    device,
18445
0
                    swapchain_count,
18446
0
                    p_swapchains,
18447
0
                    p_metadata,
18448
0
                )
18449
            },
18450
        }
18451
0
    }
18452
0
    extern "system" fn set_debug_utils_object_name_ext(
18453
0
        device: vk::Device,
18454
0
        p_name_info: *const vk::DebugUtilsObjectNameInfoEXT,
18455
0
    ) -> vk::Result {
18456
0
        let global = Self::instance();
18457
0
        // vkSetDebugUtilsObjectNameEXT
18458
0
        let device_info = global.get_device_info(device).unwrap();
18459
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18460
0
        let layer_result = device_info
18461
0
            .customized_info
18462
0
            .borrow()
18463
0
            .hooks()
18464
0
            .set_debug_utils_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
18465
0
        match layer_result {
18466
0
            LayerResult::Handled(res) => match res {
18467
0
                Ok(()) => vk::Result::SUCCESS,
18468
0
                Err(e) => e,
18469
            },
18470
            LayerResult::Unhandled => unsafe {
18471
0
                (dispatch_table.set_debug_utils_object_name_ext)(device, p_name_info)
18472
            },
18473
        }
18474
0
    }
18475
0
    extern "system" fn set_debug_utils_object_tag_ext(
18476
0
        device: vk::Device,
18477
0
        p_tag_info: *const vk::DebugUtilsObjectTagInfoEXT,
18478
0
    ) -> vk::Result {
18479
0
        let global = Self::instance();
18480
0
        // vkSetDebugUtilsObjectTagEXT
18481
0
        let device_info = global.get_device_info(device).unwrap();
18482
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18483
0
        let layer_result = device_info
18484
0
            .customized_info
18485
0
            .borrow()
18486
0
            .hooks()
18487
0
            .set_debug_utils_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
18488
0
        match layer_result {
18489
0
            LayerResult::Handled(res) => match res {
18490
0
                Ok(()) => vk::Result::SUCCESS,
18491
0
                Err(e) => e,
18492
            },
18493
            LayerResult::Unhandled => unsafe {
18494
0
                (dispatch_table.set_debug_utils_object_tag_ext)(device, p_tag_info)
18495
            },
18496
        }
18497
0
    }
18498
0
    extern "system" fn queue_begin_debug_utils_label_ext(
18499
0
        queue: vk::Queue,
18500
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18501
0
    ) {
18502
0
        let global = Self::instance();
18503
0
        // vkQueueBeginDebugUtilsLabelEXT
18504
0
        let device_info = global.get_device_info(queue).unwrap();
18505
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18506
0
        let layer_result = device_info
18507
0
            .customized_info
18508
0
            .borrow()
18509
0
            .hooks()
18510
0
            .queue_begin_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18511
0
        match layer_result {
18512
0
            LayerResult::Handled(res) => res,
18513
            LayerResult::Unhandled => unsafe {
18514
0
                (dispatch_table.queue_begin_debug_utils_label_ext)(queue, p_label_info)
18515
            },
18516
        }
18517
0
    }
18518
0
    extern "system" fn queue_end_debug_utils_label_ext(queue: vk::Queue) {
18519
0
        let global = Self::instance();
18520
0
        // vkQueueEndDebugUtilsLabelEXT
18521
0
        let device_info = global.get_device_info(queue).unwrap();
18522
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18523
0
        let layer_result = device_info
18524
0
            .customized_info
18525
0
            .borrow()
18526
0
            .hooks()
18527
0
            .queue_end_debug_utils_label_ext(queue);
18528
0
        match layer_result {
18529
0
            LayerResult::Handled(res) => res,
18530
            LayerResult::Unhandled => unsafe {
18531
0
                (dispatch_table.queue_end_debug_utils_label_ext)(queue)
18532
            },
18533
        }
18534
0
    }
18535
0
    extern "system" fn queue_insert_debug_utils_label_ext(
18536
0
        queue: vk::Queue,
18537
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18538
0
    ) {
18539
0
        let global = Self::instance();
18540
0
        // vkQueueInsertDebugUtilsLabelEXT
18541
0
        let device_info = global.get_device_info(queue).unwrap();
18542
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18543
0
        let layer_result = device_info
18544
0
            .customized_info
18545
0
            .borrow()
18546
0
            .hooks()
18547
0
            .queue_insert_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18548
0
        match layer_result {
18549
0
            LayerResult::Handled(res) => res,
18550
            LayerResult::Unhandled => unsafe {
18551
0
                (dispatch_table.queue_insert_debug_utils_label_ext)(queue, p_label_info)
18552
            },
18553
        }
18554
0
    }
18555
0
    extern "system" fn cmd_begin_debug_utils_label_ext(
18556
0
        command_buffer: vk::CommandBuffer,
18557
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18558
0
    ) {
18559
0
        let global = Self::instance();
18560
0
        // vkCmdBeginDebugUtilsLabelEXT
18561
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18562
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18563
0
        let layer_result = device_info
18564
0
            .customized_info
18565
0
            .borrow()
18566
0
            .hooks()
18567
0
            .cmd_begin_debug_utils_label_ext(
18568
0
                command_buffer,
18569
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18570
0
            );
18571
0
        match layer_result {
18572
0
            LayerResult::Handled(res) => res,
18573
            LayerResult::Unhandled => unsafe {
18574
0
                (dispatch_table.cmd_begin_debug_utils_label_ext)(command_buffer, p_label_info)
18575
            },
18576
        }
18577
0
    }
18578
0
    extern "system" fn cmd_end_debug_utils_label_ext(command_buffer: vk::CommandBuffer) {
18579
0
        let global = Self::instance();
18580
0
        // vkCmdEndDebugUtilsLabelEXT
18581
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18582
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18583
0
        let layer_result = device_info
18584
0
            .customized_info
18585
0
            .borrow()
18586
0
            .hooks()
18587
0
            .cmd_end_debug_utils_label_ext(command_buffer);
18588
0
        match layer_result {
18589
0
            LayerResult::Handled(res) => res,
18590
            LayerResult::Unhandled => unsafe {
18591
0
                (dispatch_table.cmd_end_debug_utils_label_ext)(command_buffer)
18592
            },
18593
        }
18594
0
    }
18595
0
    extern "system" fn cmd_insert_debug_utils_label_ext(
18596
0
        command_buffer: vk::CommandBuffer,
18597
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18598
0
    ) {
18599
0
        let global = Self::instance();
18600
0
        // vkCmdInsertDebugUtilsLabelEXT
18601
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18602
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18603
0
        let layer_result = device_info
18604
0
            .customized_info
18605
0
            .borrow()
18606
0
            .hooks()
18607
0
            .cmd_insert_debug_utils_label_ext(
18608
0
                command_buffer,
18609
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18610
0
            );
18611
0
        match layer_result {
18612
0
            LayerResult::Handled(res) => res,
18613
            LayerResult::Unhandled => unsafe {
18614
0
                (dispatch_table.cmd_insert_debug_utils_label_ext)(command_buffer, p_label_info)
18615
            },
18616
        }
18617
0
    }
18618
0
    extern "system" fn get_android_hardware_buffer_properties_android(
18619
0
        device: vk::Device,
18620
0
        buffer: *const vk::AHardwareBuffer,
18621
0
        p_properties: *mut vk::AndroidHardwareBufferPropertiesANDROID,
18622
0
    ) -> vk::Result {
18623
0
        let global = Self::instance();
18624
0
        // vkGetAndroidHardwareBufferPropertiesANDROID
18625
0
        let device_info = global.get_device_info(device).unwrap();
18626
0
        let dispatch_table = &device_info
18627
0
            .dispatch_table
18628
0
            .android_external_memory_android_hardware_buffer;
18629
0
        let layer_result = device_info
18630
0
            .customized_info
18631
0
            .borrow()
18632
0
            .hooks()
18633
0
            .get_android_hardware_buffer_properties_android(
18634
0
                unsafe { buffer.as_ref() }.unwrap(),
18635
0
                unsafe { p_properties.as_mut() }.unwrap(),
18636
0
            );
18637
0
        match layer_result {
18638
0
            LayerResult::Handled(res) => match res {
18639
0
                Ok(()) => vk::Result::SUCCESS,
18640
0
                Err(e) => e,
18641
            },
18642
            LayerResult::Unhandled => unsafe {
18643
0
                (dispatch_table.get_android_hardware_buffer_properties_android)(
18644
0
                    device,
18645
0
                    buffer,
18646
0
                    p_properties,
18647
0
                )
18648
            },
18649
        }
18650
0
    }
18651
0
    extern "system" fn get_memory_android_hardware_buffer_android(
18652
0
        device: vk::Device,
18653
0
        p_info: *const vk::MemoryGetAndroidHardwareBufferInfoANDROID,
18654
0
        p_buffer: *mut *mut vk::AHardwareBuffer,
18655
0
    ) -> vk::Result {
18656
0
        let global = Self::instance();
18657
0
        // vkGetMemoryAndroidHardwareBufferANDROID
18658
0
        let device_info = global.get_device_info(device).unwrap();
18659
0
        let dispatch_table = &device_info
18660
0
            .dispatch_table
18661
0
            .android_external_memory_android_hardware_buffer;
18662
0
        let layer_result = device_info
18663
0
            .customized_info
18664
0
            .borrow()
18665
0
            .hooks()
18666
0
            .get_memory_android_hardware_buffer_android(unsafe { p_info.as_ref() }.unwrap());
18667
0
        match layer_result {
18668
0
            LayerResult::Handled(res) => match res {
18669
0
                Ok(res) => {
18670
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
18671
0
                    vk::Result::SUCCESS
18672
                }
18673
0
                Err(e) => e,
18674
            },
18675
            LayerResult::Unhandled => unsafe {
18676
0
                (dispatch_table.get_memory_android_hardware_buffer_android)(
18677
0
                    device, p_info, p_buffer,
18678
0
                )
18679
            },
18680
        }
18681
0
    }
18682
0
    extern "system" fn cmd_set_sample_locations_ext(
18683
0
        command_buffer: vk::CommandBuffer,
18684
0
        p_sample_locations_info: *const vk::SampleLocationsInfoEXT,
18685
0
    ) {
18686
0
        let global = Self::instance();
18687
0
        // vkCmdSetSampleLocationsEXT
18688
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18689
0
        let dispatch_table = &device_info.dispatch_table.ext_sample_locations;
18690
0
        let layer_result = device_info
18691
0
            .customized_info
18692
0
            .borrow()
18693
0
            .hooks()
18694
0
            .cmd_set_sample_locations_ext(
18695
0
                command_buffer,
18696
0
                unsafe { p_sample_locations_info.as_ref() }.unwrap(),
18697
0
            );
18698
0
        match layer_result {
18699
0
            LayerResult::Handled(res) => res,
18700
            LayerResult::Unhandled => unsafe {
18701
0
                (dispatch_table.cmd_set_sample_locations_ext)(
18702
0
                    command_buffer,
18703
0
                    p_sample_locations_info,
18704
0
                )
18705
            },
18706
        }
18707
0
    }
18708
0
    extern "system" fn get_image_drm_format_modifier_properties_ext(
18709
0
        device: vk::Device,
18710
0
        image: vk::Image,
18711
0
        p_properties: *mut vk::ImageDrmFormatModifierPropertiesEXT,
18712
0
    ) -> vk::Result {
18713
0
        let global = Self::instance();
18714
0
        // vkGetImageDrmFormatModifierPropertiesEXT
18715
0
        let device_info = global.get_device_info(device).unwrap();
18716
0
        let dispatch_table = &device_info.dispatch_table.ext_image_drm_format_modifier;
18717
0
        let layer_result = device_info
18718
0
            .customized_info
18719
0
            .borrow()
18720
0
            .hooks()
18721
0
            .get_image_drm_format_modifier_properties_ext(
18722
0
                image,
18723
0
                unsafe { p_properties.as_mut() }.unwrap(),
18724
0
            );
18725
0
        match layer_result {
18726
0
            LayerResult::Handled(res) => match res {
18727
0
                Ok(()) => vk::Result::SUCCESS,
18728
0
                Err(e) => e,
18729
            },
18730
            LayerResult::Unhandled => unsafe {
18731
0
                (dispatch_table.get_image_drm_format_modifier_properties_ext)(
18732
0
                    device,
18733
0
                    image,
18734
0
                    p_properties,
18735
0
                )
18736
            },
18737
        }
18738
0
    }
18739
0
    extern "system" fn create_validation_cache_ext(
18740
0
        device: vk::Device,
18741
0
        p_create_info: *const vk::ValidationCacheCreateInfoEXT,
18742
0
        p_allocator: *const vk::AllocationCallbacks,
18743
0
        p_validation_cache: *mut vk::ValidationCacheEXT,
18744
0
    ) -> vk::Result {
18745
0
        let global = Self::instance();
18746
0
        // vkCreateValidationCacheEXT
18747
0
        let device_info = global.get_device_info(device).unwrap();
18748
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18749
0
        let layer_result = device_info
18750
0
            .customized_info
18751
0
            .borrow()
18752
0
            .hooks()
18753
0
            .create_validation_cache_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18754
0
                p_allocator.as_ref()
18755
0
            });
18756
0
        match layer_result {
18757
0
            LayerResult::Handled(res) => match res {
18758
0
                Ok(res) => {
18759
0
                    *unsafe { p_validation_cache.as_mut() }.unwrap() = res;
18760
0
                    vk::Result::SUCCESS
18761
                }
18762
0
                Err(e) => e,
18763
            },
18764
            LayerResult::Unhandled => unsafe {
18765
0
                (dispatch_table.create_validation_cache_ext)(
18766
0
                    device,
18767
0
                    p_create_info,
18768
0
                    p_allocator,
18769
0
                    p_validation_cache,
18770
0
                )
18771
            },
18772
        }
18773
0
    }
18774
0
    extern "system" fn destroy_validation_cache_ext(
18775
0
        device: vk::Device,
18776
0
        validation_cache: vk::ValidationCacheEXT,
18777
0
        p_allocator: *const vk::AllocationCallbacks,
18778
0
    ) {
18779
0
        let global = Self::instance();
18780
0
        // vkDestroyValidationCacheEXT
18781
0
        let device_info = global.get_device_info(device).unwrap();
18782
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18783
0
        let layer_result = device_info
18784
0
            .customized_info
18785
0
            .borrow()
18786
0
            .hooks()
18787
0
            .destroy_validation_cache_ext(validation_cache, unsafe { p_allocator.as_ref() });
18788
0
        match layer_result {
18789
0
            LayerResult::Handled(res) => res,
18790
            LayerResult::Unhandled => unsafe {
18791
0
                (dispatch_table.destroy_validation_cache_ext)(device, validation_cache, p_allocator)
18792
            },
18793
        }
18794
0
    }
18795
0
    extern "system" fn merge_validation_caches_ext(
18796
0
        device: vk::Device,
18797
0
        dst_cache: vk::ValidationCacheEXT,
18798
0
        src_cache_count: u32,
18799
0
        p_src_caches: *const vk::ValidationCacheEXT,
18800
0
    ) -> vk::Result {
18801
0
        let global = Self::instance();
18802
0
        // vkMergeValidationCachesEXT
18803
0
        let device_info = global.get_device_info(device).unwrap();
18804
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18805
0
        #[allow(clippy::unnecessary_cast)]
18806
0
        let layer_result = device_info
18807
0
            .customized_info
18808
0
            .borrow()
18809
0
            .hooks()
18810
0
            .merge_validation_caches_ext(dst_cache, unsafe {
18811
0
                std::slice::from_raw_parts(p_src_caches, src_cache_count as usize)
18812
0
            });
18813
0
        match layer_result {
18814
0
            LayerResult::Handled(res) => match res {
18815
0
                Ok(()) => vk::Result::SUCCESS,
18816
0
                Err(e) => e,
18817
            },
18818
            LayerResult::Unhandled => unsafe {
18819
0
                (dispatch_table.merge_validation_caches_ext)(
18820
0
                    device,
18821
0
                    dst_cache,
18822
0
                    src_cache_count,
18823
0
                    p_src_caches,
18824
0
                )
18825
            },
18826
        }
18827
0
    }
18828
0
    extern "system" fn get_validation_cache_data_ext(
18829
0
        device: vk::Device,
18830
0
        validation_cache: vk::ValidationCacheEXT,
18831
0
        p_data_size: *mut usize,
18832
0
        p_data: *mut c_void,
18833
0
    ) -> vk::Result {
18834
0
        let global = Self::instance();
18835
0
        // vkGetValidationCacheDataEXT
18836
0
        let device_info = global.get_device_info(device).unwrap();
18837
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18838
0
        let layer_result = device_info
18839
0
            .customized_info
18840
0
            .borrow()
18841
0
            .hooks()
18842
0
            .get_validation_cache_data_ext(validation_cache);
18843
0
        match layer_result {
18844
0
            LayerResult::Handled(res) => match res {
18845
0
                Ok(res) => {
18846
0
                    let p_data = p_data as *mut u8;
18847
0
                    unsafe { fill_vk_out_array(&res, NonNull::new(p_data_size).unwrap(), p_data) }
18848
                }
18849
0
                Err(e) => e,
18850
            },
18851
            LayerResult::Unhandled => unsafe {
18852
0
                (dispatch_table.get_validation_cache_data_ext)(
18853
0
                    device,
18854
0
                    validation_cache,
18855
0
                    p_data_size,
18856
0
                    p_data,
18857
0
                )
18858
            },
18859
        }
18860
0
    }
18861
0
    extern "system" fn cmd_bind_shading_rate_image_nv(
18862
0
        command_buffer: vk::CommandBuffer,
18863
0
        image_view: vk::ImageView,
18864
0
        image_layout: vk::ImageLayout,
18865
0
    ) {
18866
0
        let global = Self::instance();
18867
0
        // vkCmdBindShadingRateImageNV
18868
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18869
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18870
0
        let layer_result = device_info
18871
0
            .customized_info
18872
0
            .borrow()
18873
0
            .hooks()
18874
0
            .cmd_bind_shading_rate_image_nv(command_buffer, image_view, image_layout);
18875
0
        match layer_result {
18876
0
            LayerResult::Handled(res) => res,
18877
            LayerResult::Unhandled => unsafe {
18878
0
                (dispatch_table.cmd_bind_shading_rate_image_nv)(
18879
0
                    command_buffer,
18880
0
                    image_view,
18881
0
                    image_layout,
18882
0
                )
18883
            },
18884
        }
18885
0
    }
18886
0
    extern "system" fn cmd_set_viewport_shading_rate_palette_nv(
18887
0
        command_buffer: vk::CommandBuffer,
18888
0
        first_viewport: u32,
18889
0
        viewport_count: u32,
18890
0
        p_shading_rate_palettes: *const vk::ShadingRatePaletteNV,
18891
0
    ) {
18892
0
        let global = Self::instance();
18893
0
        // vkCmdSetViewportShadingRatePaletteNV
18894
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18895
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18896
0
        #[allow(clippy::unnecessary_cast)]
18897
0
        let layer_result = device_info
18898
0
            .customized_info
18899
0
            .borrow()
18900
0
            .hooks()
18901
0
            .cmd_set_viewport_shading_rate_palette_nv(command_buffer, first_viewport, unsafe {
18902
0
                std::slice::from_raw_parts(p_shading_rate_palettes, viewport_count as usize)
18903
0
            });
18904
0
        match layer_result {
18905
0
            LayerResult::Handled(res) => res,
18906
            LayerResult::Unhandled => unsafe {
18907
0
                (dispatch_table.cmd_set_viewport_shading_rate_palette_nv)(
18908
0
                    command_buffer,
18909
0
                    first_viewport,
18910
0
                    viewport_count,
18911
0
                    p_shading_rate_palettes,
18912
0
                )
18913
            },
18914
        }
18915
0
    }
18916
0
    extern "system" fn cmd_set_coarse_sample_order_nv(
18917
0
        command_buffer: vk::CommandBuffer,
18918
0
        sample_order_type: vk::CoarseSampleOrderTypeNV,
18919
0
        custom_sample_order_count: u32,
18920
0
        p_custom_sample_orders: *const vk::CoarseSampleOrderCustomNV,
18921
0
    ) {
18922
0
        let global = Self::instance();
18923
0
        // vkCmdSetCoarseSampleOrderNV
18924
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18925
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18926
0
        #[allow(clippy::unnecessary_cast)]
18927
0
        let layer_result = device_info
18928
0
            .customized_info
18929
0
            .borrow()
18930
0
            .hooks()
18931
0
            .cmd_set_coarse_sample_order_nv(command_buffer, sample_order_type, unsafe {
18932
0
                std::slice::from_raw_parts(
18933
0
                    p_custom_sample_orders,
18934
0
                    custom_sample_order_count as usize,
18935
0
                )
18936
0
            });
18937
0
        match layer_result {
18938
0
            LayerResult::Handled(res) => res,
18939
            LayerResult::Unhandled => unsafe {
18940
0
                (dispatch_table.cmd_set_coarse_sample_order_nv)(
18941
0
                    command_buffer,
18942
0
                    sample_order_type,
18943
0
                    custom_sample_order_count,
18944
0
                    p_custom_sample_orders,
18945
0
                )
18946
            },
18947
        }
18948
0
    }
18949
0
    extern "system" fn create_acceleration_structure_nv(
18950
0
        device: vk::Device,
18951
0
        p_create_info: *const vk::AccelerationStructureCreateInfoNV,
18952
0
        p_allocator: *const vk::AllocationCallbacks,
18953
0
        p_acceleration_structure: *mut vk::AccelerationStructureNV,
18954
0
    ) -> vk::Result {
18955
0
        let global = Self::instance();
18956
0
        // vkCreateAccelerationStructureNV
18957
0
        let device_info = global.get_device_info(device).unwrap();
18958
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18959
0
        let layer_result = device_info
18960
0
            .customized_info
18961
0
            .borrow()
18962
0
            .hooks()
18963
0
            .create_acceleration_structure_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18964
0
                p_allocator.as_ref()
18965
0
            });
18966
0
        match layer_result {
18967
0
            LayerResult::Handled(res) => match res {
18968
0
                Ok(res) => {
18969
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
18970
0
                    vk::Result::SUCCESS
18971
                }
18972
0
                Err(e) => e,
18973
            },
18974
            LayerResult::Unhandled => unsafe {
18975
0
                (dispatch_table.create_acceleration_structure_nv)(
18976
0
                    device,
18977
0
                    p_create_info,
18978
0
                    p_allocator,
18979
0
                    p_acceleration_structure,
18980
0
                )
18981
            },
18982
        }
18983
0
    }
18984
0
    extern "system" fn destroy_acceleration_structure_nv(
18985
0
        device: vk::Device,
18986
0
        acceleration_structure: vk::AccelerationStructureNV,
18987
0
        p_allocator: *const vk::AllocationCallbacks,
18988
0
    ) {
18989
0
        let global = Self::instance();
18990
0
        // vkDestroyAccelerationStructureNV
18991
0
        let device_info = global.get_device_info(device).unwrap();
18992
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18993
0
        let layer_result = device_info
18994
0
            .customized_info
18995
0
            .borrow()
18996
0
            .hooks()
18997
0
            .destroy_acceleration_structure_nv(acceleration_structure, unsafe {
18998
0
                p_allocator.as_ref()
18999
0
            });
19000
0
        match layer_result {
19001
0
            LayerResult::Handled(res) => res,
19002
            LayerResult::Unhandled => unsafe {
19003
0
                (dispatch_table.destroy_acceleration_structure_nv)(
19004
0
                    device,
19005
0
                    acceleration_structure,
19006
0
                    p_allocator,
19007
0
                )
19008
            },
19009
        }
19010
0
    }
19011
0
    extern "system" fn get_acceleration_structure_memory_requirements_nv(
19012
0
        device: vk::Device,
19013
0
        p_info: *const vk::AccelerationStructureMemoryRequirementsInfoNV,
19014
0
        p_memory_requirements: *mut vk::MemoryRequirements2KHR,
19015
0
    ) {
19016
0
        let global = Self::instance();
19017
0
        // vkGetAccelerationStructureMemoryRequirementsNV
19018
0
        let device_info = global.get_device_info(device).unwrap();
19019
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19020
0
        let layer_result = device_info
19021
0
            .customized_info
19022
0
            .borrow()
19023
0
            .hooks()
19024
0
            .get_acceleration_structure_memory_requirements_nv(
19025
0
                unsafe { p_info.as_ref() }.unwrap(),
19026
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
19027
0
            );
19028
0
        match layer_result {
19029
0
            LayerResult::Handled(res) => res,
19030
            LayerResult::Unhandled => unsafe {
19031
0
                (dispatch_table.get_acceleration_structure_memory_requirements_nv)(
19032
0
                    device,
19033
0
                    p_info,
19034
0
                    p_memory_requirements,
19035
0
                )
19036
            },
19037
        }
19038
0
    }
19039
0
    extern "system" fn bind_acceleration_structure_memory_nv(
19040
0
        device: vk::Device,
19041
0
        bind_info_count: u32,
19042
0
        p_bind_infos: *const vk::BindAccelerationStructureMemoryInfoNV,
19043
0
    ) -> vk::Result {
19044
0
        let global = Self::instance();
19045
0
        // vkBindAccelerationStructureMemoryNV
19046
0
        let device_info = global.get_device_info(device).unwrap();
19047
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19048
0
        #[allow(clippy::unnecessary_cast)]
19049
0
        let layer_result = device_info
19050
0
            .customized_info
19051
0
            .borrow()
19052
0
            .hooks()
19053
0
            .bind_acceleration_structure_memory_nv(unsafe {
19054
0
                std::slice::from_raw_parts(p_bind_infos, bind_info_count as usize)
19055
0
            });
19056
0
        match layer_result {
19057
0
            LayerResult::Handled(res) => match res {
19058
0
                Ok(()) => vk::Result::SUCCESS,
19059
0
                Err(e) => e,
19060
            },
19061
            LayerResult::Unhandled => unsafe {
19062
0
                (dispatch_table.bind_acceleration_structure_memory_nv)(
19063
0
                    device,
19064
0
                    bind_info_count,
19065
0
                    p_bind_infos,
19066
0
                )
19067
            },
19068
        }
19069
0
    }
19070
0
    extern "system" fn cmd_build_acceleration_structure_nv(
19071
0
        command_buffer: vk::CommandBuffer,
19072
0
        p_info: *const vk::AccelerationStructureInfoNV,
19073
0
        instance_data: vk::Buffer,
19074
0
        instance_offset: vk::DeviceSize,
19075
0
        update: vk::Bool32,
19076
0
        dst: vk::AccelerationStructureNV,
19077
0
        src: vk::AccelerationStructureNV,
19078
0
        scratch: vk::Buffer,
19079
0
        scratch_offset: vk::DeviceSize,
19080
0
    ) {
19081
0
        let global = Self::instance();
19082
0
        // vkCmdBuildAccelerationStructureNV
19083
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19084
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19085
0
        let layer_result = device_info
19086
0
            .customized_info
19087
0
            .borrow()
19088
0
            .hooks()
19089
0
            .cmd_build_acceleration_structure_nv(
19090
0
                command_buffer,
19091
0
                unsafe { p_info.as_ref() }.unwrap(),
19092
0
                instance_data,
19093
0
                instance_offset,
19094
0
                update == vk::TRUE,
19095
0
                dst,
19096
0
                src,
19097
0
                scratch,
19098
0
                scratch_offset,
19099
0
            );
19100
0
        match layer_result {
19101
0
            LayerResult::Handled(res) => res,
19102
            LayerResult::Unhandled => unsafe {
19103
0
                (dispatch_table.cmd_build_acceleration_structure_nv)(
19104
0
                    command_buffer,
19105
0
                    p_info,
19106
0
                    instance_data,
19107
0
                    instance_offset,
19108
0
                    update,
19109
0
                    dst,
19110
0
                    src,
19111
0
                    scratch,
19112
0
                    scratch_offset,
19113
0
                )
19114
            },
19115
        }
19116
0
    }
19117
0
    extern "system" fn cmd_copy_acceleration_structure_nv(
19118
0
        command_buffer: vk::CommandBuffer,
19119
0
        dst: vk::AccelerationStructureNV,
19120
0
        src: vk::AccelerationStructureNV,
19121
0
        mode: vk::CopyAccelerationStructureModeKHR,
19122
0
    ) {
19123
0
        let global = Self::instance();
19124
0
        // vkCmdCopyAccelerationStructureNV
19125
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19126
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19127
0
        let layer_result = device_info
19128
0
            .customized_info
19129
0
            .borrow()
19130
0
            .hooks()
19131
0
            .cmd_copy_acceleration_structure_nv(command_buffer, dst, src, mode);
19132
0
        match layer_result {
19133
0
            LayerResult::Handled(res) => res,
19134
            LayerResult::Unhandled => unsafe {
19135
0
                (dispatch_table.cmd_copy_acceleration_structure_nv)(command_buffer, dst, src, mode)
19136
            },
19137
        }
19138
0
    }
19139
0
    extern "system" fn cmd_trace_rays_nv(
19140
0
        command_buffer: vk::CommandBuffer,
19141
0
        raygen_shader_binding_table_buffer: vk::Buffer,
19142
0
        raygen_shader_binding_offset: vk::DeviceSize,
19143
0
        miss_shader_binding_table_buffer: vk::Buffer,
19144
0
        miss_shader_binding_offset: vk::DeviceSize,
19145
0
        miss_shader_binding_stride: vk::DeviceSize,
19146
0
        hit_shader_binding_table_buffer: vk::Buffer,
19147
0
        hit_shader_binding_offset: vk::DeviceSize,
19148
0
        hit_shader_binding_stride: vk::DeviceSize,
19149
0
        callable_shader_binding_table_buffer: vk::Buffer,
19150
0
        callable_shader_binding_offset: vk::DeviceSize,
19151
0
        callable_shader_binding_stride: vk::DeviceSize,
19152
0
        width: u32,
19153
0
        height: u32,
19154
0
        depth: u32,
19155
0
    ) {
19156
0
        let global = Self::instance();
19157
0
        // vkCmdTraceRaysNV
19158
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19159
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19160
0
        let layer_result = device_info
19161
0
            .customized_info
19162
0
            .borrow()
19163
0
            .hooks()
19164
0
            .cmd_trace_rays_nv(
19165
0
                command_buffer,
19166
0
                raygen_shader_binding_table_buffer,
19167
0
                raygen_shader_binding_offset,
19168
0
                miss_shader_binding_table_buffer,
19169
0
                miss_shader_binding_offset,
19170
0
                miss_shader_binding_stride,
19171
0
                hit_shader_binding_table_buffer,
19172
0
                hit_shader_binding_offset,
19173
0
                hit_shader_binding_stride,
19174
0
                callable_shader_binding_table_buffer,
19175
0
                callable_shader_binding_offset,
19176
0
                callable_shader_binding_stride,
19177
0
                width,
19178
0
                height,
19179
0
                depth,
19180
0
            );
19181
0
        match layer_result {
19182
0
            LayerResult::Handled(res) => res,
19183
            LayerResult::Unhandled => unsafe {
19184
0
                (dispatch_table.cmd_trace_rays_nv)(
19185
0
                    command_buffer,
19186
0
                    raygen_shader_binding_table_buffer,
19187
0
                    raygen_shader_binding_offset,
19188
0
                    miss_shader_binding_table_buffer,
19189
0
                    miss_shader_binding_offset,
19190
0
                    miss_shader_binding_stride,
19191
0
                    hit_shader_binding_table_buffer,
19192
0
                    hit_shader_binding_offset,
19193
0
                    hit_shader_binding_stride,
19194
0
                    callable_shader_binding_table_buffer,
19195
0
                    callable_shader_binding_offset,
19196
0
                    callable_shader_binding_stride,
19197
0
                    width,
19198
0
                    height,
19199
0
                    depth,
19200
0
                )
19201
            },
19202
        }
19203
0
    }
19204
0
    extern "system" fn create_ray_tracing_pipelines_nv(
19205
0
        device: vk::Device,
19206
0
        pipeline_cache: vk::PipelineCache,
19207
0
        create_info_count: u32,
19208
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoNV,
19209
0
        p_allocator: *const vk::AllocationCallbacks,
19210
0
        p_pipelines: *mut vk::Pipeline,
19211
0
    ) -> vk::Result {
19212
0
        let global = Self::instance();
19213
0
        // vkCreateRayTracingPipelinesNV
19214
0
        let device_info = global.get_device_info(device).unwrap();
19215
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19216
0
        #[allow(clippy::unnecessary_cast)]
19217
0
        let layer_result = device_info
19218
0
            .customized_info
19219
0
            .borrow()
19220
0
            .hooks()
19221
0
            .create_ray_tracing_pipelines_nv(
19222
0
                pipeline_cache,
19223
0
                unsafe { std::slice::from_raw_parts(p_create_infos, create_info_count as usize) },
19224
0
                unsafe { p_allocator.as_ref() },
19225
0
            );
19226
0
        match layer_result {
19227
0
            LayerResult::Handled(res) => match res {
19228
0
                Ok(res) => {
19229
0
                    unsafe {
19230
0
                        std::slice::from_raw_parts_mut(
19231
0
                            p_pipelines,
19232
0
                            create_info_count.try_into().unwrap(),
19233
0
                        )
19234
0
                    }
19235
0
                    .copy_from_slice(&res);
19236
0
                    vk::Result::SUCCESS
19237
                }
19238
0
                Err(e) => e,
19239
            },
19240
            LayerResult::Unhandled => unsafe {
19241
0
                (dispatch_table.create_ray_tracing_pipelines_nv)(
19242
0
                    device,
19243
0
                    pipeline_cache,
19244
0
                    create_info_count,
19245
0
                    p_create_infos,
19246
0
                    p_allocator,
19247
0
                    p_pipelines,
19248
0
                )
19249
            },
19250
        }
19251
0
    }
19252
0
    extern "system" fn get_ray_tracing_shader_group_handles_khr(
19253
0
        device: vk::Device,
19254
0
        pipeline: vk::Pipeline,
19255
0
        first_group: u32,
19256
0
        group_count: u32,
19257
0
        data_size: usize,
19258
0
        p_data: *mut c_void,
19259
0
    ) -> vk::Result {
19260
0
        let global = Self::instance();
19261
0
        // vkGetRayTracingShaderGroupHandlesKHR
19262
0
        let device_info = global.get_device_info(device).unwrap();
19263
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
19264
0
        let layer_result = device_info
19265
0
            .customized_info
19266
0
            .borrow()
19267
0
            .hooks()
19268
0
            .get_ray_tracing_shader_group_handles_khr(pipeline, first_group, group_count);
19269
0
        match layer_result {
19270
0
            LayerResult::Handled(res) => match res {
19271
0
                Ok(res) => {
19272
0
                    let p_data = p_data as *mut u8;
19273
0
                    unsafe { std::slice::from_raw_parts_mut(p_data, data_size) }
19274
0
                        .copy_from_slice(&res);
19275
0
                    vk::Result::SUCCESS
19276
                }
19277
0
                Err(e) => e,
19278
            },
19279
            LayerResult::Unhandled => unsafe {
19280
0
                (dispatch_table.get_ray_tracing_shader_group_handles_khr)(
19281
0
                    device,
19282
0
                    pipeline,
19283
0
                    first_group,
19284
0
                    group_count,
19285
0
                    data_size,
19286
0
                    p_data,
19287
0
                )
19288
            },
19289
        }
19290
0
    }
19291
0
    extern "system" fn get_acceleration_structure_handle_nv(
19292
0
        device: vk::Device,
19293
0
        acceleration_structure: vk::AccelerationStructureNV,
19294
0
        data_size: usize,
19295
0
        p_data: *mut c_void,
19296
0
    ) -> vk::Result {
19297
0
        let global = Self::instance();
19298
0
        // vkGetAccelerationStructureHandleNV
19299
0
        let device_info = global.get_device_info(device).unwrap();
19300
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19301
0
        let layer_result = device_info
19302
0
            .customized_info
19303
0
            .borrow()
19304
0
            .hooks()
19305
0
            .get_acceleration_structure_handle_nv(acceleration_structure);
19306
0
        match layer_result {
19307
0
            LayerResult::Handled(res) => match res {
19308
0
                Ok(res) => {
19309
0
                    let p_data = p_data as *mut u8;
19310
0
                    unsafe { std::slice::from_raw_parts_mut(p_data, data_size) }
19311
0
                        .copy_from_slice(&res);
19312
0
                    vk::Result::SUCCESS
19313
                }
19314
0
                Err(e) => e,
19315
            },
19316
            LayerResult::Unhandled => unsafe {
19317
0
                (dispatch_table.get_acceleration_structure_handle_nv)(
19318
0
                    device,
19319
0
                    acceleration_structure,
19320
0
                    data_size,
19321
0
                    p_data,
19322
0
                )
19323
            },
19324
        }
19325
0
    }
19326
0
    extern "system" fn cmd_write_acceleration_structures_properties_nv(
19327
0
        command_buffer: vk::CommandBuffer,
19328
0
        acceleration_structure_count: u32,
19329
0
        p_acceleration_structures: *const vk::AccelerationStructureNV,
19330
0
        query_type: vk::QueryType,
19331
0
        query_pool: vk::QueryPool,
19332
0
        first_query: u32,
19333
0
    ) {
19334
0
        let global = Self::instance();
19335
0
        // vkCmdWriteAccelerationStructuresPropertiesNV
19336
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19337
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19338
0
        #[allow(clippy::unnecessary_cast)]
19339
0
        let layer_result = device_info
19340
0
            .customized_info
19341
0
            .borrow()
19342
0
            .hooks()
19343
0
            .cmd_write_acceleration_structures_properties_nv(
19344
0
                command_buffer,
19345
0
                unsafe {
19346
0
                    std::slice::from_raw_parts(
19347
0
                        p_acceleration_structures,
19348
0
                        acceleration_structure_count as usize,
19349
0
                    )
19350
0
                },
19351
0
                query_type,
19352
0
                query_pool,
19353
0
                first_query,
19354
0
            );
19355
0
        match layer_result {
19356
0
            LayerResult::Handled(res) => res,
19357
            LayerResult::Unhandled => unsafe {
19358
0
                (dispatch_table.cmd_write_acceleration_structures_properties_nv)(
19359
0
                    command_buffer,
19360
0
                    acceleration_structure_count,
19361
0
                    p_acceleration_structures,
19362
0
                    query_type,
19363
0
                    query_pool,
19364
0
                    first_query,
19365
0
                )
19366
            },
19367
        }
19368
0
    }
19369
0
    extern "system" fn compile_deferred_nv(
19370
0
        device: vk::Device,
19371
0
        pipeline: vk::Pipeline,
19372
0
        shader: u32,
19373
0
    ) -> vk::Result {
19374
0
        let global = Self::instance();
19375
0
        // vkCompileDeferredNV
19376
0
        let device_info = global.get_device_info(device).unwrap();
19377
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19378
0
        let layer_result = device_info
19379
0
            .customized_info
19380
0
            .borrow()
19381
0
            .hooks()
19382
0
            .compile_deferred_nv(pipeline, shader);
19383
0
        match layer_result {
19384
0
            LayerResult::Handled(res) => match res {
19385
0
                Ok(()) => vk::Result::SUCCESS,
19386
0
                Err(e) => e,
19387
            },
19388
            LayerResult::Unhandled => unsafe {
19389
0
                (dispatch_table.compile_deferred_nv)(device, pipeline, shader)
19390
            },
19391
        }
19392
0
    }
19393
0
    extern "system" fn get_memory_host_pointer_properties_ext(
19394
0
        device: vk::Device,
19395
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
19396
0
        p_host_pointer: *const c_void,
19397
0
        p_memory_host_pointer_properties: *mut vk::MemoryHostPointerPropertiesEXT,
19398
0
    ) -> vk::Result {
19399
0
        let global = Self::instance();
19400
0
        // vkGetMemoryHostPointerPropertiesEXT
19401
0
        let device_info = global.get_device_info(device).unwrap();
19402
0
        let dispatch_table = &device_info.dispatch_table.ext_external_memory_host;
19403
0
        let layer_result = device_info
19404
0
            .customized_info
19405
0
            .borrow()
19406
0
            .hooks()
19407
0
            .get_memory_host_pointer_properties_ext(
19408
0
                handle_type,
19409
0
                unsafe { p_host_pointer.as_ref() }.unwrap(),
19410
0
                unsafe { p_memory_host_pointer_properties.as_mut() }.unwrap(),
19411
0
            );
19412
0
        match layer_result {
19413
0
            LayerResult::Handled(res) => match res {
19414
0
                Ok(()) => vk::Result::SUCCESS,
19415
0
                Err(e) => e,
19416
            },
19417
            LayerResult::Unhandled => unsafe {
19418
0
                (dispatch_table.get_memory_host_pointer_properties_ext)(
19419
0
                    device,
19420
0
                    handle_type,
19421
0
                    p_host_pointer,
19422
0
                    p_memory_host_pointer_properties,
19423
0
                )
19424
            },
19425
        }
19426
0
    }
19427
0
    extern "system" fn cmd_write_buffer_marker_amd(
19428
0
        command_buffer: vk::CommandBuffer,
19429
0
        pipeline_stage: vk::PipelineStageFlags,
19430
0
        dst_buffer: vk::Buffer,
19431
0
        dst_offset: vk::DeviceSize,
19432
0
        marker: u32,
19433
0
    ) {
19434
0
        let global = Self::instance();
19435
0
        // vkCmdWriteBufferMarkerAMD
19436
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19437
0
        let dispatch_table = &device_info.dispatch_table.amd_buffer_marker;
19438
0
        let layer_result = device_info
19439
0
            .customized_info
19440
0
            .borrow()
19441
0
            .hooks()
19442
0
            .cmd_write_buffer_marker_amd(
19443
0
                command_buffer,
19444
0
                pipeline_stage,
19445
0
                dst_buffer,
19446
0
                dst_offset,
19447
0
                marker,
19448
0
            );
19449
0
        match layer_result {
19450
0
            LayerResult::Handled(res) => res,
19451
            LayerResult::Unhandled => unsafe {
19452
0
                (dispatch_table.cmd_write_buffer_marker_amd)(
19453
0
                    command_buffer,
19454
0
                    pipeline_stage,
19455
0
                    dst_buffer,
19456
0
                    dst_offset,
19457
0
                    marker,
19458
0
                )
19459
            },
19460
        }
19461
0
    }
19462
0
    extern "system" fn get_calibrated_timestamps_ext(
19463
0
        device: vk::Device,
19464
0
        timestamp_count: u32,
19465
0
        p_timestamp_infos: *const vk::CalibratedTimestampInfoEXT,
19466
0
        p_timestamps: *mut u64,
19467
0
        p_max_deviation: *mut u64,
19468
0
    ) -> vk::Result {
19469
0
        let global = Self::instance();
19470
0
        // vkGetCalibratedTimestampsEXT
19471
0
        let device_info = global.get_device_info(device).unwrap();
19472
0
        let dispatch_table = &device_info.dispatch_table.ext_calibrated_timestamps;
19473
0
        #[allow(clippy::unnecessary_cast)]
19474
0
        #[allow(clippy::unnecessary_cast)]
19475
0
        let layer_result = device_info
19476
0
            .customized_info
19477
0
            .borrow()
19478
0
            .hooks()
19479
0
            .get_calibrated_timestamps_ext(
19480
0
                unsafe { std::slice::from_raw_parts(p_timestamp_infos, timestamp_count as usize) },
19481
0
                unsafe { std::slice::from_raw_parts_mut(p_timestamps, timestamp_count as usize) },
19482
0
            );
19483
0
        match layer_result {
19484
0
            LayerResult::Handled(res) => match res {
19485
0
                Ok(res) => {
19486
0
                    *unsafe { p_max_deviation.as_mut() }.unwrap() = res;
19487
0
                    vk::Result::SUCCESS
19488
                }
19489
0
                Err(e) => e,
19490
            },
19491
            LayerResult::Unhandled => unsafe {
19492
0
                (dispatch_table.get_calibrated_timestamps_ext)(
19493
0
                    device,
19494
0
                    timestamp_count,
19495
0
                    p_timestamp_infos,
19496
0
                    p_timestamps,
19497
0
                    p_max_deviation,
19498
0
                )
19499
            },
19500
        }
19501
0
    }
19502
0
    extern "system" fn cmd_draw_mesh_tasks_nv(
19503
0
        command_buffer: vk::CommandBuffer,
19504
0
        task_count: u32,
19505
0
        first_task: u32,
19506
0
    ) {
19507
0
        let global = Self::instance();
19508
0
        // vkCmdDrawMeshTasksNV
19509
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19510
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19511
0
        let layer_result = device_info
19512
0
            .customized_info
19513
0
            .borrow()
19514
0
            .hooks()
19515
0
            .cmd_draw_mesh_tasks_nv(command_buffer, task_count, first_task);
19516
0
        match layer_result {
19517
0
            LayerResult::Handled(res) => res,
19518
            LayerResult::Unhandled => unsafe {
19519
0
                (dispatch_table.cmd_draw_mesh_tasks_nv)(command_buffer, task_count, first_task)
19520
            },
19521
        }
19522
0
    }
19523
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_nv(
19524
0
        command_buffer: vk::CommandBuffer,
19525
0
        buffer: vk::Buffer,
19526
0
        offset: vk::DeviceSize,
19527
0
        draw_count: u32,
19528
0
        stride: u32,
19529
0
    ) {
19530
0
        let global = Self::instance();
19531
0
        // vkCmdDrawMeshTasksIndirectNV
19532
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19533
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19534
0
        let layer_result = device_info
19535
0
            .customized_info
19536
0
            .borrow()
19537
0
            .hooks()
19538
0
            .cmd_draw_mesh_tasks_indirect_nv(command_buffer, buffer, offset, draw_count, stride);
19539
0
        match layer_result {
19540
0
            LayerResult::Handled(res) => res,
19541
            LayerResult::Unhandled => unsafe {
19542
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_nv)(
19543
0
                    command_buffer,
19544
0
                    buffer,
19545
0
                    offset,
19546
0
                    draw_count,
19547
0
                    stride,
19548
0
                )
19549
            },
19550
        }
19551
0
    }
19552
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_nv(
19553
0
        command_buffer: vk::CommandBuffer,
19554
0
        buffer: vk::Buffer,
19555
0
        offset: vk::DeviceSize,
19556
0
        count_buffer: vk::Buffer,
19557
0
        count_buffer_offset: vk::DeviceSize,
19558
0
        max_draw_count: u32,
19559
0
        stride: u32,
19560
0
    ) {
19561
0
        let global = Self::instance();
19562
0
        // vkCmdDrawMeshTasksIndirectCountNV
19563
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19564
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19565
0
        let layer_result = device_info
19566
0
            .customized_info
19567
0
            .borrow()
19568
0
            .hooks()
19569
0
            .cmd_draw_mesh_tasks_indirect_count_nv(
19570
0
                command_buffer,
19571
0
                buffer,
19572
0
                offset,
19573
0
                count_buffer,
19574
0
                count_buffer_offset,
19575
0
                max_draw_count,
19576
0
                stride,
19577
0
            );
19578
0
        match layer_result {
19579
0
            LayerResult::Handled(res) => res,
19580
            LayerResult::Unhandled => unsafe {
19581
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_nv)(
19582
0
                    command_buffer,
19583
0
                    buffer,
19584
0
                    offset,
19585
0
                    count_buffer,
19586
0
                    count_buffer_offset,
19587
0
                    max_draw_count,
19588
0
                    stride,
19589
0
                )
19590
            },
19591
        }
19592
0
    }
19593
0
    extern "system" fn cmd_set_exclusive_scissor_nv(
19594
0
        command_buffer: vk::CommandBuffer,
19595
0
        first_exclusive_scissor: u32,
19596
0
        exclusive_scissor_count: u32,
19597
0
        p_exclusive_scissors: *const vk::Rect2D,
19598
0
    ) {
19599
0
        let global = Self::instance();
19600
0
        // vkCmdSetExclusiveScissorNV
19601
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19602
0
        let dispatch_table = &device_info.dispatch_table.nv_scissor_exclusive;
19603
0
        #[allow(clippy::unnecessary_cast)]
19604
0
        let layer_result = device_info
19605
0
            .customized_info
19606
0
            .borrow()
19607
0
            .hooks()
19608
0
            .cmd_set_exclusive_scissor_nv(command_buffer, first_exclusive_scissor, unsafe {
19609
0
                std::slice::from_raw_parts(p_exclusive_scissors, exclusive_scissor_count as usize)
19610
0
            });
19611
0
        match layer_result {
19612
0
            LayerResult::Handled(res) => res,
19613
            LayerResult::Unhandled => unsafe {
19614
0
                (dispatch_table.cmd_set_exclusive_scissor_nv)(
19615
0
                    command_buffer,
19616
0
                    first_exclusive_scissor,
19617
0
                    exclusive_scissor_count,
19618
0
                    p_exclusive_scissors,
19619
0
                )
19620
            },
19621
        }
19622
0
    }
19623
0
    extern "system" fn cmd_set_checkpoint_nv(
19624
0
        command_buffer: vk::CommandBuffer,
19625
0
        p_checkpoint_marker: *const c_void,
19626
0
    ) {
19627
0
        let global = Self::instance();
19628
0
        // vkCmdSetCheckpointNV
19629
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19630
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19631
0
        let layer_result = device_info
19632
0
            .customized_info
19633
0
            .borrow()
19634
0
            .hooks()
19635
0
            .cmd_set_checkpoint_nv(
19636
0
                command_buffer,
19637
0
                unsafe { p_checkpoint_marker.as_ref() }.unwrap(),
19638
0
            );
19639
0
        match layer_result {
19640
0
            LayerResult::Handled(res) => res,
19641
            LayerResult::Unhandled => unsafe {
19642
0
                (dispatch_table.cmd_set_checkpoint_nv)(command_buffer, p_checkpoint_marker)
19643
            },
19644
        }
19645
0
    }
19646
0
    extern "system" fn get_queue_checkpoint_data_nv(
19647
0
        queue: vk::Queue,
19648
0
        p_checkpoint_data_count: *mut u32,
19649
0
        p_checkpoint_data: *mut vk::CheckpointDataNV,
19650
0
    ) {
19651
0
        let global = Self::instance();
19652
0
        // vkGetQueueCheckpointDataNV
19653
0
        let device_info = global.get_device_info(queue).unwrap();
19654
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19655
        #[allow(clippy::unnecessary_cast)]
19656
0
        let layer_result = device_info
19657
0
            .customized_info
19658
0
            .borrow()
19659
0
            .hooks()
19660
0
            .get_queue_checkpoint_data_nv(
19661
0
                queue,
19662
0
                if p_checkpoint_data.is_null() {
19663
0
                    None
19664
                } else {
19665
0
                    Some(unsafe {
19666
0
                        std::slice::from_raw_parts_mut(
19667
0
                            p_checkpoint_data,
19668
0
                            *unsafe { p_checkpoint_data_count.as_ref() }.unwrap() as usize,
19669
0
                        )
19670
0
                    })
19671
                },
19672
            );
19673
0
        match layer_result {
19674
0
            LayerResult::Handled(res) => res,
19675
            LayerResult::Unhandled => unsafe {
19676
0
                (dispatch_table.get_queue_checkpoint_data_nv)(
19677
0
                    queue,
19678
0
                    p_checkpoint_data_count,
19679
0
                    p_checkpoint_data,
19680
0
                )
19681
            },
19682
        }
19683
0
    }
19684
0
    extern "system" fn initialize_performance_api_intel(
19685
0
        device: vk::Device,
19686
0
        p_initialize_info: *const vk::InitializePerformanceApiInfoINTEL,
19687
0
    ) -> vk::Result {
19688
0
        let global = Self::instance();
19689
0
        // vkInitializePerformanceApiINTEL
19690
0
        let device_info = global.get_device_info(device).unwrap();
19691
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19692
0
        let layer_result = device_info
19693
0
            .customized_info
19694
0
            .borrow()
19695
0
            .hooks()
19696
0
            .initialize_performance_api_intel(unsafe { p_initialize_info.as_ref() }.unwrap());
19697
0
        match layer_result {
19698
0
            LayerResult::Handled(res) => match res {
19699
0
                Ok(()) => vk::Result::SUCCESS,
19700
0
                Err(e) => e,
19701
            },
19702
            LayerResult::Unhandled => unsafe {
19703
0
                (dispatch_table.initialize_performance_api_intel)(device, p_initialize_info)
19704
            },
19705
        }
19706
0
    }
19707
0
    extern "system" fn uninitialize_performance_api_intel(device: vk::Device) {
19708
0
        let global = Self::instance();
19709
0
        // vkUninitializePerformanceApiINTEL
19710
0
        let device_info = global.get_device_info(device).unwrap();
19711
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19712
0
        let layer_result = device_info
19713
0
            .customized_info
19714
0
            .borrow()
19715
0
            .hooks()
19716
0
            .uninitialize_performance_api_intel();
19717
0
        match layer_result {
19718
0
            LayerResult::Handled(res) => res,
19719
            LayerResult::Unhandled => unsafe {
19720
0
                (dispatch_table.uninitialize_performance_api_intel)(device)
19721
            },
19722
        }
19723
0
    }
19724
0
    extern "system" fn cmd_set_performance_marker_intel(
19725
0
        command_buffer: vk::CommandBuffer,
19726
0
        p_marker_info: *const vk::PerformanceMarkerInfoINTEL,
19727
0
    ) -> vk::Result {
19728
0
        let global = Self::instance();
19729
0
        // vkCmdSetPerformanceMarkerINTEL
19730
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19731
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19732
0
        let layer_result = device_info
19733
0
            .customized_info
19734
0
            .borrow()
19735
0
            .hooks()
19736
0
            .cmd_set_performance_marker_intel(
19737
0
                command_buffer,
19738
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19739
0
            );
19740
0
        match layer_result {
19741
0
            LayerResult::Handled(res) => match res {
19742
0
                Ok(()) => vk::Result::SUCCESS,
19743
0
                Err(e) => e,
19744
            },
19745
            LayerResult::Unhandled => unsafe {
19746
0
                (dispatch_table.cmd_set_performance_marker_intel)(command_buffer, p_marker_info)
19747
            },
19748
        }
19749
0
    }
19750
0
    extern "system" fn cmd_set_performance_stream_marker_intel(
19751
0
        command_buffer: vk::CommandBuffer,
19752
0
        p_marker_info: *const vk::PerformanceStreamMarkerInfoINTEL,
19753
0
    ) -> vk::Result {
19754
0
        let global = Self::instance();
19755
0
        // vkCmdSetPerformanceStreamMarkerINTEL
19756
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19757
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19758
0
        let layer_result = device_info
19759
0
            .customized_info
19760
0
            .borrow()
19761
0
            .hooks()
19762
0
            .cmd_set_performance_stream_marker_intel(
19763
0
                command_buffer,
19764
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19765
0
            );
19766
0
        match layer_result {
19767
0
            LayerResult::Handled(res) => match res {
19768
0
                Ok(()) => vk::Result::SUCCESS,
19769
0
                Err(e) => e,
19770
            },
19771
            LayerResult::Unhandled => unsafe {
19772
0
                (dispatch_table.cmd_set_performance_stream_marker_intel)(
19773
0
                    command_buffer,
19774
0
                    p_marker_info,
19775
0
                )
19776
            },
19777
        }
19778
0
    }
19779
0
    extern "system" fn cmd_set_performance_override_intel(
19780
0
        command_buffer: vk::CommandBuffer,
19781
0
        p_override_info: *const vk::PerformanceOverrideInfoINTEL,
19782
0
    ) -> vk::Result {
19783
0
        let global = Self::instance();
19784
0
        // vkCmdSetPerformanceOverrideINTEL
19785
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19786
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19787
0
        let layer_result = device_info
19788
0
            .customized_info
19789
0
            .borrow()
19790
0
            .hooks()
19791
0
            .cmd_set_performance_override_intel(
19792
0
                command_buffer,
19793
0
                unsafe { p_override_info.as_ref() }.unwrap(),
19794
0
            );
19795
0
        match layer_result {
19796
0
            LayerResult::Handled(res) => match res {
19797
0
                Ok(()) => vk::Result::SUCCESS,
19798
0
                Err(e) => e,
19799
            },
19800
            LayerResult::Unhandled => unsafe {
19801
0
                (dispatch_table.cmd_set_performance_override_intel)(command_buffer, p_override_info)
19802
            },
19803
        }
19804
0
    }
19805
0
    extern "system" fn acquire_performance_configuration_intel(
19806
0
        device: vk::Device,
19807
0
        p_acquire_info: *const vk::PerformanceConfigurationAcquireInfoINTEL,
19808
0
        p_configuration: *mut vk::PerformanceConfigurationINTEL,
19809
0
    ) -> vk::Result {
19810
0
        let global = Self::instance();
19811
0
        // vkAcquirePerformanceConfigurationINTEL
19812
0
        let device_info = global.get_device_info(device).unwrap();
19813
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19814
0
        let layer_result = device_info
19815
0
            .customized_info
19816
0
            .borrow()
19817
0
            .hooks()
19818
0
            .acquire_performance_configuration_intel(unsafe { p_acquire_info.as_ref() }.unwrap());
19819
0
        match layer_result {
19820
0
            LayerResult::Handled(res) => match res {
19821
0
                Ok(res) => {
19822
0
                    *unsafe { p_configuration.as_mut() }.unwrap() = res;
19823
0
                    vk::Result::SUCCESS
19824
                }
19825
0
                Err(e) => e,
19826
            },
19827
            LayerResult::Unhandled => unsafe {
19828
0
                (dispatch_table.acquire_performance_configuration_intel)(
19829
0
                    device,
19830
0
                    p_acquire_info,
19831
0
                    p_configuration,
19832
0
                )
19833
            },
19834
        }
19835
0
    }
19836
0
    extern "system" fn release_performance_configuration_intel(
19837
0
        device: vk::Device,
19838
0
        configuration: vk::PerformanceConfigurationINTEL,
19839
0
    ) -> vk::Result {
19840
0
        let global = Self::instance();
19841
0
        // vkReleasePerformanceConfigurationINTEL
19842
0
        let device_info = global.get_device_info(device).unwrap();
19843
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19844
0
        let layer_result = device_info
19845
0
            .customized_info
19846
0
            .borrow()
19847
0
            .hooks()
19848
0
            .release_performance_configuration_intel(configuration);
19849
0
        match layer_result {
19850
0
            LayerResult::Handled(res) => match res {
19851
0
                Ok(()) => vk::Result::SUCCESS,
19852
0
                Err(e) => e,
19853
            },
19854
            LayerResult::Unhandled => unsafe {
19855
0
                (dispatch_table.release_performance_configuration_intel)(device, configuration)
19856
            },
19857
        }
19858
0
    }
19859
0
    extern "system" fn queue_set_performance_configuration_intel(
19860
0
        queue: vk::Queue,
19861
0
        configuration: vk::PerformanceConfigurationINTEL,
19862
0
    ) -> vk::Result {
19863
0
        let global = Self::instance();
19864
0
        // vkQueueSetPerformanceConfigurationINTEL
19865
0
        let device_info = global.get_device_info(queue).unwrap();
19866
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19867
0
        let layer_result = device_info
19868
0
            .customized_info
19869
0
            .borrow()
19870
0
            .hooks()
19871
0
            .queue_set_performance_configuration_intel(queue, configuration);
19872
0
        match layer_result {
19873
0
            LayerResult::Handled(res) => match res {
19874
0
                Ok(()) => vk::Result::SUCCESS,
19875
0
                Err(e) => e,
19876
            },
19877
            LayerResult::Unhandled => unsafe {
19878
0
                (dispatch_table.queue_set_performance_configuration_intel)(queue, configuration)
19879
            },
19880
        }
19881
0
    }
19882
0
    extern "system" fn get_performance_parameter_intel(
19883
0
        device: vk::Device,
19884
0
        parameter: vk::PerformanceParameterTypeINTEL,
19885
0
        p_value: *mut vk::PerformanceValueINTEL,
19886
0
    ) -> vk::Result {
19887
0
        let global = Self::instance();
19888
0
        // vkGetPerformanceParameterINTEL
19889
0
        let device_info = global.get_device_info(device).unwrap();
19890
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19891
0
        let layer_result = device_info
19892
0
            .customized_info
19893
0
            .borrow()
19894
0
            .hooks()
19895
0
            .get_performance_parameter_intel(parameter, unsafe { p_value.as_mut() }.unwrap());
19896
0
        match layer_result {
19897
0
            LayerResult::Handled(res) => match res {
19898
0
                Ok(()) => vk::Result::SUCCESS,
19899
0
                Err(e) => e,
19900
            },
19901
            LayerResult::Unhandled => unsafe {
19902
0
                (dispatch_table.get_performance_parameter_intel)(device, parameter, p_value)
19903
            },
19904
        }
19905
0
    }
19906
0
    extern "system" fn set_local_dimming_amd(
19907
0
        device: vk::Device,
19908
0
        swap_chain: vk::SwapchainKHR,
19909
0
        local_dimming_enable: vk::Bool32,
19910
0
    ) {
19911
0
        let global = Self::instance();
19912
0
        // vkSetLocalDimmingAMD
19913
0
        let device_info = global.get_device_info(device).unwrap();
19914
0
        let dispatch_table = &device_info.dispatch_table.amd_display_native_hdr;
19915
0
        let layer_result = device_info
19916
0
            .customized_info
19917
0
            .borrow()
19918
0
            .hooks()
19919
0
            .set_local_dimming_amd(swap_chain, local_dimming_enable == vk::TRUE);
19920
0
        match layer_result {
19921
0
            LayerResult::Handled(res) => res,
19922
            LayerResult::Unhandled => unsafe {
19923
0
                (dispatch_table.set_local_dimming_amd)(device, swap_chain, local_dimming_enable)
19924
            },
19925
        }
19926
0
    }
19927
0
    extern "system" fn acquire_full_screen_exclusive_mode_ext(
19928
0
        device: vk::Device,
19929
0
        swapchain: vk::SwapchainKHR,
19930
0
    ) -> vk::Result {
19931
0
        let global = Self::instance();
19932
0
        // vkAcquireFullScreenExclusiveModeEXT
19933
0
        let device_info = global.get_device_info(device).unwrap();
19934
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19935
0
        let layer_result = device_info
19936
0
            .customized_info
19937
0
            .borrow()
19938
0
            .hooks()
19939
0
            .acquire_full_screen_exclusive_mode_ext(swapchain);
19940
0
        match layer_result {
19941
0
            LayerResult::Handled(res) => match res {
19942
0
                Ok(()) => vk::Result::SUCCESS,
19943
0
                Err(e) => e,
19944
            },
19945
            LayerResult::Unhandled => unsafe {
19946
0
                (dispatch_table.acquire_full_screen_exclusive_mode_ext)(device, swapchain)
19947
            },
19948
        }
19949
0
    }
19950
0
    extern "system" fn release_full_screen_exclusive_mode_ext(
19951
0
        device: vk::Device,
19952
0
        swapchain: vk::SwapchainKHR,
19953
0
    ) -> vk::Result {
19954
0
        let global = Self::instance();
19955
0
        // vkReleaseFullScreenExclusiveModeEXT
19956
0
        let device_info = global.get_device_info(device).unwrap();
19957
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19958
0
        let layer_result = device_info
19959
0
            .customized_info
19960
0
            .borrow()
19961
0
            .hooks()
19962
0
            .release_full_screen_exclusive_mode_ext(swapchain);
19963
0
        match layer_result {
19964
0
            LayerResult::Handled(res) => match res {
19965
0
                Ok(()) => vk::Result::SUCCESS,
19966
0
                Err(e) => e,
19967
            },
19968
            LayerResult::Unhandled => unsafe {
19969
0
                (dispatch_table.release_full_screen_exclusive_mode_ext)(device, swapchain)
19970
            },
19971
        }
19972
0
    }
19973
0
    extern "system" fn get_device_group_surface_present_modes2_ext(
19974
0
        device: vk::Device,
19975
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
19976
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
19977
0
    ) -> vk::Result {
19978
0
        let global = Self::instance();
19979
0
        // vkGetDeviceGroupSurfacePresentModes2EXT
19980
0
        let device_info = global.get_device_info(device).unwrap();
19981
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19982
0
        let layer_result = device_info
19983
0
            .customized_info
19984
0
            .borrow()
19985
0
            .hooks()
19986
0
            .get_device_group_surface_present_modes2_ext(
19987
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
19988
0
            );
19989
0
        match layer_result {
19990
0
            LayerResult::Handled(res) => match res {
19991
0
                Ok(res) => {
19992
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
19993
0
                    vk::Result::SUCCESS
19994
                }
19995
0
                Err(e) => e,
19996
            },
19997
            LayerResult::Unhandled => unsafe {
19998
0
                (dispatch_table.get_device_group_surface_present_modes2_ext)(
19999
0
                    device,
20000
0
                    p_surface_info,
20001
0
                    p_modes,
20002
0
                )
20003
            },
20004
        }
20005
0
    }
20006
0
    extern "system" fn cmd_set_line_stipple_ext(
20007
0
        command_buffer: vk::CommandBuffer,
20008
0
        line_stipple_factor: u32,
20009
0
        line_stipple_pattern: u16,
20010
0
    ) {
20011
0
        let global = Self::instance();
20012
0
        // vkCmdSetLineStippleEXT
20013
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20014
0
        let dispatch_table = &device_info.dispatch_table.ext_line_rasterization;
20015
0
        let layer_result = device_info
20016
0
            .customized_info
20017
0
            .borrow()
20018
0
            .hooks()
20019
0
            .cmd_set_line_stipple_ext(command_buffer, line_stipple_factor, line_stipple_pattern);
20020
0
        match layer_result {
20021
0
            LayerResult::Handled(res) => res,
20022
            LayerResult::Unhandled => unsafe {
20023
0
                (dispatch_table.cmd_set_line_stipple_ext)(
20024
0
                    command_buffer,
20025
0
                    line_stipple_factor,
20026
0
                    line_stipple_pattern,
20027
0
                )
20028
            },
20029
        }
20030
0
    }
20031
0
    extern "system" fn release_swapchain_images_ext(
20032
0
        device: vk::Device,
20033
0
        p_release_info: *const vk::ReleaseSwapchainImagesInfoEXT,
20034
0
    ) -> vk::Result {
20035
0
        let global = Self::instance();
20036
0
        // vkReleaseSwapchainImagesEXT
20037
0
        let device_info = global.get_device_info(device).unwrap();
20038
0
        let dispatch_table = &device_info.dispatch_table.ext_swapchain_maintenance1;
20039
0
        let layer_result = device_info
20040
0
            .customized_info
20041
0
            .borrow()
20042
0
            .hooks()
20043
0
            .release_swapchain_images_ext(unsafe { p_release_info.as_ref() }.unwrap());
20044
0
        match layer_result {
20045
0
            LayerResult::Handled(res) => match res {
20046
0
                Ok(()) => vk::Result::SUCCESS,
20047
0
                Err(e) => e,
20048
            },
20049
            LayerResult::Unhandled => unsafe {
20050
0
                (dispatch_table.release_swapchain_images_ext)(device, p_release_info)
20051
            },
20052
        }
20053
0
    }
20054
0
    extern "system" fn get_generated_commands_memory_requirements_nv(
20055
0
        device: vk::Device,
20056
0
        p_info: *const vk::GeneratedCommandsMemoryRequirementsInfoNV,
20057
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
20058
0
    ) {
20059
0
        let global = Self::instance();
20060
0
        // vkGetGeneratedCommandsMemoryRequirementsNV
20061
0
        let device_info = global.get_device_info(device).unwrap();
20062
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20063
0
        let layer_result = device_info
20064
0
            .customized_info
20065
0
            .borrow()
20066
0
            .hooks()
20067
0
            .get_generated_commands_memory_requirements_nv(
20068
0
                unsafe { p_info.as_ref() }.unwrap(),
20069
0
                unsafe { p_memory_requirements.as_mut() }.unwrap(),
20070
0
            );
20071
0
        match layer_result {
20072
0
            LayerResult::Handled(res) => res,
20073
            LayerResult::Unhandled => unsafe {
20074
0
                (dispatch_table.get_generated_commands_memory_requirements_nv)(
20075
0
                    device,
20076
0
                    p_info,
20077
0
                    p_memory_requirements,
20078
0
                )
20079
            },
20080
        }
20081
0
    }
20082
0
    extern "system" fn cmd_preprocess_generated_commands_nv(
20083
0
        command_buffer: vk::CommandBuffer,
20084
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
20085
0
    ) {
20086
0
        let global = Self::instance();
20087
0
        // vkCmdPreprocessGeneratedCommandsNV
20088
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20089
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20090
0
        let layer_result = device_info
20091
0
            .customized_info
20092
0
            .borrow()
20093
0
            .hooks()
20094
0
            .cmd_preprocess_generated_commands_nv(
20095
0
                command_buffer,
20096
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
20097
0
            );
20098
0
        match layer_result {
20099
0
            LayerResult::Handled(res) => res,
20100
            LayerResult::Unhandled => unsafe {
20101
0
                (dispatch_table.cmd_preprocess_generated_commands_nv)(
20102
0
                    command_buffer,
20103
0
                    p_generated_commands_info,
20104
0
                )
20105
            },
20106
        }
20107
0
    }
20108
0
    extern "system" fn cmd_execute_generated_commands_nv(
20109
0
        command_buffer: vk::CommandBuffer,
20110
0
        is_preprocessed: vk::Bool32,
20111
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
20112
0
    ) {
20113
0
        let global = Self::instance();
20114
0
        // vkCmdExecuteGeneratedCommandsNV
20115
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20116
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20117
0
        let layer_result = device_info
20118
0
            .customized_info
20119
0
            .borrow()
20120
0
            .hooks()
20121
0
            .cmd_execute_generated_commands_nv(
20122
0
                command_buffer,
20123
0
                is_preprocessed == vk::TRUE,
20124
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
20125
0
            );
20126
0
        match layer_result {
20127
0
            LayerResult::Handled(res) => res,
20128
            LayerResult::Unhandled => unsafe {
20129
0
                (dispatch_table.cmd_execute_generated_commands_nv)(
20130
0
                    command_buffer,
20131
0
                    is_preprocessed,
20132
0
                    p_generated_commands_info,
20133
0
                )
20134
            },
20135
        }
20136
0
    }
20137
0
    extern "system" fn cmd_bind_pipeline_shader_group_nv(
20138
0
        command_buffer: vk::CommandBuffer,
20139
0
        pipeline_bind_point: vk::PipelineBindPoint,
20140
0
        pipeline: vk::Pipeline,
20141
0
        group_index: u32,
20142
0
    ) {
20143
0
        let global = Self::instance();
20144
0
        // vkCmdBindPipelineShaderGroupNV
20145
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20146
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20147
0
        let layer_result = device_info
20148
0
            .customized_info
20149
0
            .borrow()
20150
0
            .hooks()
20151
0
            .cmd_bind_pipeline_shader_group_nv(
20152
0
                command_buffer,
20153
0
                pipeline_bind_point,
20154
0
                pipeline,
20155
0
                group_index,
20156
0
            );
20157
0
        match layer_result {
20158
0
            LayerResult::Handled(res) => res,
20159
            LayerResult::Unhandled => unsafe {
20160
0
                (dispatch_table.cmd_bind_pipeline_shader_group_nv)(
20161
0
                    command_buffer,
20162
0
                    pipeline_bind_point,
20163
0
                    pipeline,
20164
0
                    group_index,
20165
0
                )
20166
            },
20167
        }
20168
0
    }
20169
0
    extern "system" fn create_indirect_commands_layout_nv(
20170
0
        device: vk::Device,
20171
0
        p_create_info: *const vk::IndirectCommandsLayoutCreateInfoNV,
20172
0
        p_allocator: *const vk::AllocationCallbacks,
20173
0
        p_indirect_commands_layout: *mut vk::IndirectCommandsLayoutNV,
20174
0
    ) -> vk::Result {
20175
0
        let global = Self::instance();
20176
0
        // vkCreateIndirectCommandsLayoutNV
20177
0
        let device_info = global.get_device_info(device).unwrap();
20178
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20179
0
        let layer_result = device_info
20180
0
            .customized_info
20181
0
            .borrow()
20182
0
            .hooks()
20183
0
            .create_indirect_commands_layout_nv(
20184
0
                unsafe { p_create_info.as_ref() }.unwrap(),
20185
0
                unsafe { p_allocator.as_ref() },
20186
0
            );
20187
0
        match layer_result {
20188
0
            LayerResult::Handled(res) => match res {
20189
0
                Ok(res) => {
20190
0
                    *unsafe { p_indirect_commands_layout.as_mut() }.unwrap() = res;
20191
0
                    vk::Result::SUCCESS
20192
                }
20193
0
                Err(e) => e,
20194
            },
20195
            LayerResult::Unhandled => unsafe {
20196
0
                (dispatch_table.create_indirect_commands_layout_nv)(
20197
0
                    device,
20198
0
                    p_create_info,
20199
0
                    p_allocator,
20200
0
                    p_indirect_commands_layout,
20201
0
                )
20202
            },
20203
        }
20204
0
    }
20205
0
    extern "system" fn destroy_indirect_commands_layout_nv(
20206
0
        device: vk::Device,
20207
0
        indirect_commands_layout: vk::IndirectCommandsLayoutNV,
20208
0
        p_allocator: *const vk::AllocationCallbacks,
20209
0
    ) {
20210
0
        let global = Self::instance();
20211
0
        // vkDestroyIndirectCommandsLayoutNV
20212
0
        let device_info = global.get_device_info(device).unwrap();
20213
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
20214
0
        let layer_result = device_info
20215
0
            .customized_info
20216
0
            .borrow()
20217
0
            .hooks()
20218
0
            .destroy_indirect_commands_layout_nv(indirect_commands_layout, unsafe {
20219
0
                p_allocator.as_ref()
20220
0
            });
20221
0
        match layer_result {
20222
0
            LayerResult::Handled(res) => res,
20223
            LayerResult::Unhandled => unsafe {
20224
0
                (dispatch_table.destroy_indirect_commands_layout_nv)(
20225
0
                    device,
20226
0
                    indirect_commands_layout,
20227
0
                    p_allocator,
20228
0
                )
20229
            },
20230
        }
20231
0
    }
20232
0
    extern "system" fn export_metal_objects_ext(
20233
0
        device: vk::Device,
20234
0
        p_metal_objects_info: *mut vk::ExportMetalObjectsInfoEXT,
20235
0
    ) {
20236
0
        let global = Self::instance();
20237
0
        // vkExportMetalObjectsEXT
20238
0
        let device_info = global.get_device_info(device).unwrap();
20239
0
        let dispatch_table = &device_info.dispatch_table.ext_metal_objects;
20240
0
        let layer_result = device_info
20241
0
            .customized_info
20242
0
            .borrow()
20243
0
            .hooks()
20244
0
            .export_metal_objects_ext(unsafe { p_metal_objects_info.as_mut() }.unwrap());
20245
0
        match layer_result {
20246
0
            LayerResult::Handled(res) => res,
20247
            LayerResult::Unhandled => unsafe {
20248
0
                (dispatch_table.export_metal_objects_ext)(device, p_metal_objects_info)
20249
            },
20250
        }
20251
0
    }
20252
0
    extern "system" fn get_descriptor_set_layout_size_ext(
20253
0
        device: vk::Device,
20254
0
        layout: vk::DescriptorSetLayout,
20255
0
        p_layout_size_in_bytes: *mut vk::DeviceSize,
20256
0
    ) {
20257
0
        let global = Self::instance();
20258
0
        // vkGetDescriptorSetLayoutSizeEXT
20259
0
        let device_info = global.get_device_info(device).unwrap();
20260
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20261
0
        let layer_result = device_info
20262
0
            .customized_info
20263
0
            .borrow()
20264
0
            .hooks()
20265
0
            .get_descriptor_set_layout_size_ext(layout);
20266
0
        match layer_result {
20267
0
            LayerResult::Handled(res) => {
20268
0
                *unsafe { p_layout_size_in_bytes.as_mut() }.unwrap() = res;
20269
0
            }
20270
            LayerResult::Unhandled => unsafe {
20271
0
                (dispatch_table.get_descriptor_set_layout_size_ext)(
20272
0
                    device,
20273
0
                    layout,
20274
0
                    p_layout_size_in_bytes,
20275
0
                )
20276
            },
20277
        }
20278
0
    }
20279
0
    extern "system" fn get_descriptor_set_layout_binding_offset_ext(
20280
0
        device: vk::Device,
20281
0
        layout: vk::DescriptorSetLayout,
20282
0
        binding: u32,
20283
0
        p_offset: *mut vk::DeviceSize,
20284
0
    ) {
20285
0
        let global = Self::instance();
20286
0
        // vkGetDescriptorSetLayoutBindingOffsetEXT
20287
0
        let device_info = global.get_device_info(device).unwrap();
20288
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20289
0
        let layer_result = device_info
20290
0
            .customized_info
20291
0
            .borrow()
20292
0
            .hooks()
20293
0
            .get_descriptor_set_layout_binding_offset_ext(layout, binding);
20294
0
        match layer_result {
20295
0
            LayerResult::Handled(res) => {
20296
0
                *unsafe { p_offset.as_mut() }.unwrap() = res;
20297
0
            }
20298
            LayerResult::Unhandled => unsafe {
20299
0
                (dispatch_table.get_descriptor_set_layout_binding_offset_ext)(
20300
0
                    device, layout, binding, p_offset,
20301
0
                )
20302
            },
20303
        }
20304
0
    }
20305
0
    extern "system" fn get_descriptor_ext(
20306
0
        device: vk::Device,
20307
0
        p_descriptor_info: *const vk::DescriptorGetInfoEXT,
20308
0
        data_size: usize,
20309
0
        p_descriptor: *mut c_void,
20310
0
    ) {
20311
0
        let global = Self::instance();
20312
0
        // vkGetDescriptorEXT
20313
0
        let device_info = global.get_device_info(device).unwrap();
20314
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20315
0
        let layer_result = device_info
20316
0
            .customized_info
20317
0
            .borrow()
20318
0
            .hooks()
20319
0
            .get_descriptor_ext(unsafe { p_descriptor_info.as_ref() }.unwrap());
20320
0
        match layer_result {
20321
0
            LayerResult::Handled(res) => {
20322
0
                let p_descriptor = p_descriptor as *mut u8;
20323
0
                unsafe { std::slice::from_raw_parts_mut(p_descriptor, data_size) }
20324
0
                    .copy_from_slice(&res);
20325
0
            }
20326
            LayerResult::Unhandled => unsafe {
20327
0
                (dispatch_table.get_descriptor_ext)(
20328
0
                    device,
20329
0
                    p_descriptor_info,
20330
0
                    data_size,
20331
0
                    p_descriptor,
20332
0
                )
20333
            },
20334
        }
20335
0
    }
20336
0
    extern "system" fn cmd_bind_descriptor_buffers_ext(
20337
0
        command_buffer: vk::CommandBuffer,
20338
0
        buffer_count: u32,
20339
0
        p_binding_infos: *const vk::DescriptorBufferBindingInfoEXT,
20340
0
    ) {
20341
0
        let global = Self::instance();
20342
0
        // vkCmdBindDescriptorBuffersEXT
20343
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20344
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20345
0
        #[allow(clippy::unnecessary_cast)]
20346
0
        let layer_result = device_info
20347
0
            .customized_info
20348
0
            .borrow()
20349
0
            .hooks()
20350
0
            .cmd_bind_descriptor_buffers_ext(command_buffer, unsafe {
20351
0
                std::slice::from_raw_parts(p_binding_infos, buffer_count as usize)
20352
0
            });
20353
0
        match layer_result {
20354
0
            LayerResult::Handled(res) => res,
20355
            LayerResult::Unhandled => unsafe {
20356
0
                (dispatch_table.cmd_bind_descriptor_buffers_ext)(
20357
0
                    command_buffer,
20358
0
                    buffer_count,
20359
0
                    p_binding_infos,
20360
0
                )
20361
            },
20362
        }
20363
0
    }
20364
0
    extern "system" fn cmd_set_descriptor_buffer_offsets_ext(
20365
0
        command_buffer: vk::CommandBuffer,
20366
0
        pipeline_bind_point: vk::PipelineBindPoint,
20367
0
        layout: vk::PipelineLayout,
20368
0
        first_set: u32,
20369
0
        set_count: u32,
20370
0
        p_buffer_indices: *const u32,
20371
0
        p_offsets: *const vk::DeviceSize,
20372
0
    ) {
20373
0
        let global = Self::instance();
20374
0
        // vkCmdSetDescriptorBufferOffsetsEXT
20375
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20376
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20377
0
        #[allow(clippy::unnecessary_cast)]
20378
0
        #[allow(clippy::unnecessary_cast)]
20379
0
        let layer_result = device_info
20380
0
            .customized_info
20381
0
            .borrow()
20382
0
            .hooks()
20383
0
            .cmd_set_descriptor_buffer_offsets_ext(
20384
0
                command_buffer,
20385
0
                pipeline_bind_point,
20386
0
                layout,
20387
0
                first_set,
20388
0
                unsafe { std::slice::from_raw_parts(p_buffer_indices, set_count as usize) },
20389
0
                unsafe { std::slice::from_raw_parts(p_offsets, set_count as usize) },
20390
0
            );
20391
0
        match layer_result {
20392
0
            LayerResult::Handled(res) => res,
20393
            LayerResult::Unhandled => unsafe {
20394
0
                (dispatch_table.cmd_set_descriptor_buffer_offsets_ext)(
20395
0
                    command_buffer,
20396
0
                    pipeline_bind_point,
20397
0
                    layout,
20398
0
                    first_set,
20399
0
                    set_count,
20400
0
                    p_buffer_indices,
20401
0
                    p_offsets,
20402
0
                )
20403
            },
20404
        }
20405
0
    }
20406
0
    extern "system" fn cmd_bind_descriptor_buffer_embedded_samplers_ext(
20407
0
        command_buffer: vk::CommandBuffer,
20408
0
        pipeline_bind_point: vk::PipelineBindPoint,
20409
0
        layout: vk::PipelineLayout,
20410
0
        set: u32,
20411
0
    ) {
20412
0
        let global = Self::instance();
20413
0
        // vkCmdBindDescriptorBufferEmbeddedSamplersEXT
20414
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20415
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20416
0
        let layer_result = device_info
20417
0
            .customized_info
20418
0
            .borrow()
20419
0
            .hooks()
20420
0
            .cmd_bind_descriptor_buffer_embedded_samplers_ext(
20421
0
                command_buffer,
20422
0
                pipeline_bind_point,
20423
0
                layout,
20424
0
                set,
20425
0
            );
20426
0
        match layer_result {
20427
0
            LayerResult::Handled(res) => res,
20428
            LayerResult::Unhandled => unsafe {
20429
0
                (dispatch_table.cmd_bind_descriptor_buffer_embedded_samplers_ext)(
20430
0
                    command_buffer,
20431
0
                    pipeline_bind_point,
20432
0
                    layout,
20433
0
                    set,
20434
0
                )
20435
            },
20436
        }
20437
0
    }
20438
0
    extern "system" fn get_buffer_opaque_capture_descriptor_data_ext(
20439
0
        device: vk::Device,
20440
0
        p_info: *const vk::BufferCaptureDescriptorDataInfoEXT,
20441
0
        p_data: *mut c_void,
20442
0
    ) -> vk::Result {
20443
0
        let global = Self::instance();
20444
0
        // vkGetBufferOpaqueCaptureDescriptorDataEXT
20445
0
        let device_info = global.get_device_info(device).unwrap();
20446
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20447
0
        let layer_result = device_info
20448
0
            .customized_info
20449
0
            .borrow()
20450
0
            .hooks()
20451
0
            .get_buffer_opaque_capture_descriptor_data_ext(
20452
0
                unsafe { p_info.as_ref() }.unwrap(),
20453
0
                unsafe { p_data.as_mut() }.unwrap(),
20454
0
            );
20455
0
        match layer_result {
20456
0
            LayerResult::Handled(res) => match res {
20457
0
                Ok(()) => vk::Result::SUCCESS,
20458
0
                Err(e) => e,
20459
            },
20460
            LayerResult::Unhandled => unsafe {
20461
0
                (dispatch_table.get_buffer_opaque_capture_descriptor_data_ext)(
20462
0
                    device, p_info, p_data,
20463
0
                )
20464
            },
20465
        }
20466
0
    }
20467
0
    extern "system" fn get_image_opaque_capture_descriptor_data_ext(
20468
0
        device: vk::Device,
20469
0
        p_info: *const vk::ImageCaptureDescriptorDataInfoEXT,
20470
0
        p_data: *mut c_void,
20471
0
    ) -> vk::Result {
20472
0
        let global = Self::instance();
20473
0
        // vkGetImageOpaqueCaptureDescriptorDataEXT
20474
0
        let device_info = global.get_device_info(device).unwrap();
20475
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20476
0
        let layer_result = device_info
20477
0
            .customized_info
20478
0
            .borrow()
20479
0
            .hooks()
20480
0
            .get_image_opaque_capture_descriptor_data_ext(
20481
0
                unsafe { p_info.as_ref() }.unwrap(),
20482
0
                unsafe { p_data.as_mut() }.unwrap(),
20483
0
            );
20484
0
        match layer_result {
20485
0
            LayerResult::Handled(res) => match res {
20486
0
                Ok(()) => vk::Result::SUCCESS,
20487
0
                Err(e) => e,
20488
            },
20489
            LayerResult::Unhandled => unsafe {
20490
0
                (dispatch_table.get_image_opaque_capture_descriptor_data_ext)(
20491
0
                    device, p_info, p_data,
20492
0
                )
20493
            },
20494
        }
20495
0
    }
20496
0
    extern "system" fn get_image_view_opaque_capture_descriptor_data_ext(
20497
0
        device: vk::Device,
20498
0
        p_info: *const vk::ImageViewCaptureDescriptorDataInfoEXT,
20499
0
        p_data: *mut c_void,
20500
0
    ) -> vk::Result {
20501
0
        let global = Self::instance();
20502
0
        // vkGetImageViewOpaqueCaptureDescriptorDataEXT
20503
0
        let device_info = global.get_device_info(device).unwrap();
20504
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20505
0
        let layer_result = device_info
20506
0
            .customized_info
20507
0
            .borrow()
20508
0
            .hooks()
20509
0
            .get_image_view_opaque_capture_descriptor_data_ext(
20510
0
                unsafe { p_info.as_ref() }.unwrap(),
20511
0
                unsafe { p_data.as_mut() }.unwrap(),
20512
0
            );
20513
0
        match layer_result {
20514
0
            LayerResult::Handled(res) => match res {
20515
0
                Ok(()) => vk::Result::SUCCESS,
20516
0
                Err(e) => e,
20517
            },
20518
            LayerResult::Unhandled => unsafe {
20519
0
                (dispatch_table.get_image_view_opaque_capture_descriptor_data_ext)(
20520
0
                    device, p_info, p_data,
20521
0
                )
20522
            },
20523
        }
20524
0
    }
20525
0
    extern "system" fn get_sampler_opaque_capture_descriptor_data_ext(
20526
0
        device: vk::Device,
20527
0
        p_info: *const vk::SamplerCaptureDescriptorDataInfoEXT,
20528
0
        p_data: *mut c_void,
20529
0
    ) -> vk::Result {
20530
0
        let global = Self::instance();
20531
0
        // vkGetSamplerOpaqueCaptureDescriptorDataEXT
20532
0
        let device_info = global.get_device_info(device).unwrap();
20533
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20534
0
        let layer_result = device_info
20535
0
            .customized_info
20536
0
            .borrow()
20537
0
            .hooks()
20538
0
            .get_sampler_opaque_capture_descriptor_data_ext(
20539
0
                unsafe { p_info.as_ref() }.unwrap(),
20540
0
                unsafe { p_data.as_mut() }.unwrap(),
20541
0
            );
20542
0
        match layer_result {
20543
0
            LayerResult::Handled(res) => match res {
20544
0
                Ok(()) => vk::Result::SUCCESS,
20545
0
                Err(e) => e,
20546
            },
20547
            LayerResult::Unhandled => unsafe {
20548
0
                (dispatch_table.get_sampler_opaque_capture_descriptor_data_ext)(
20549
0
                    device, p_info, p_data,
20550
0
                )
20551
            },
20552
        }
20553
0
    }
20554
0
    extern "system" fn get_acceleration_structure_opaque_capture_descriptor_data_ext(
20555
0
        device: vk::Device,
20556
0
        p_info: *const vk::AccelerationStructureCaptureDescriptorDataInfoEXT,
20557
0
        p_data: *mut c_void,
20558
0
    ) -> vk::Result {
20559
0
        let global = Self::instance();
20560
0
        // vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
20561
0
        let device_info = global.get_device_info(device).unwrap();
20562
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20563
0
        let layer_result = device_info
20564
0
            .customized_info
20565
0
            .borrow()
20566
0
            .hooks()
20567
0
            .get_acceleration_structure_opaque_capture_descriptor_data_ext(
20568
0
                unsafe { p_info.as_ref() }.unwrap(),
20569
0
                unsafe { p_data.as_mut() }.unwrap(),
20570
0
            );
20571
0
        match layer_result {
20572
0
            LayerResult::Handled(res) => match res {
20573
0
                Ok(()) => vk::Result::SUCCESS,
20574
0
                Err(e) => e,
20575
            },
20576
            LayerResult::Unhandled => unsafe {
20577
0
                (dispatch_table.get_acceleration_structure_opaque_capture_descriptor_data_ext)(
20578
0
                    device, p_info, p_data,
20579
0
                )
20580
            },
20581
        }
20582
0
    }
20583
0
    extern "system" fn cmd_set_fragment_shading_rate_enum_nv(
20584
0
        command_buffer: vk::CommandBuffer,
20585
0
        shading_rate: vk::FragmentShadingRateNV,
20586
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
20587
0
    ) {
20588
0
        let global = Self::instance();
20589
0
        // vkCmdSetFragmentShadingRateEnumNV
20590
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20591
0
        let dispatch_table = &device_info.dispatch_table.nv_fragment_shading_rate_enums;
20592
0
        let combiner_ops = unsafe { combiner_ops.as_ref() }.unwrap();
20593
0
        let layer_result = device_info
20594
0
            .customized_info
20595
0
            .borrow()
20596
0
            .hooks()
20597
0
            .cmd_set_fragment_shading_rate_enum_nv(command_buffer, shading_rate, combiner_ops);
20598
0
        match layer_result {
20599
0
            LayerResult::Handled(res) => res,
20600
            LayerResult::Unhandled => unsafe {
20601
0
                (dispatch_table.cmd_set_fragment_shading_rate_enum_nv)(
20602
0
                    command_buffer,
20603
0
                    shading_rate,
20604
0
                    combiner_ops,
20605
0
                )
20606
            },
20607
        }
20608
0
    }
20609
0
    extern "system" fn get_image_subresource_layout2_ext(
20610
0
        device: vk::Device,
20611
0
        image: vk::Image,
20612
0
        p_subresource: *const vk::ImageSubresource2EXT,
20613
0
        p_layout: *mut vk::SubresourceLayout2EXT,
20614
0
    ) {
20615
0
        let global = Self::instance();
20616
0
        // vkGetImageSubresourceLayout2EXT
20617
0
        let device_info = global.get_device_info(device).unwrap();
20618
0
        let dispatch_table = &device_info.dispatch_table.ext_image_compression_control;
20619
0
        let layer_result = device_info
20620
0
            .customized_info
20621
0
            .borrow()
20622
0
            .hooks()
20623
0
            .get_image_subresource_layout2_ext(
20624
0
                image,
20625
0
                unsafe { p_subresource.as_ref() }.unwrap(),
20626
0
                unsafe { p_layout.as_mut() }.unwrap(),
20627
0
            );
20628
0
        match layer_result {
20629
0
            LayerResult::Handled(res) => res,
20630
            LayerResult::Unhandled => unsafe {
20631
0
                (dispatch_table.get_image_subresource_layout2_ext)(
20632
0
                    device,
20633
0
                    image,
20634
0
                    p_subresource,
20635
0
                    p_layout,
20636
0
                )
20637
            },
20638
        }
20639
0
    }
20640
0
    extern "system" fn cmd_set_vertex_input_ext(
20641
0
        command_buffer: vk::CommandBuffer,
20642
0
        vertex_binding_description_count: u32,
20643
0
        p_vertex_binding_descriptions: *const vk::VertexInputBindingDescription2EXT,
20644
0
        vertex_attribute_description_count: u32,
20645
0
        p_vertex_attribute_descriptions: *const vk::VertexInputAttributeDescription2EXT,
20646
0
    ) {
20647
0
        let global = Self::instance();
20648
0
        // vkCmdSetVertexInputEXT
20649
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20650
0
        let dispatch_table = &device_info.dispatch_table.ext_vertex_input_dynamic_state;
20651
0
        #[allow(clippy::unnecessary_cast)]
20652
0
        #[allow(clippy::unnecessary_cast)]
20653
0
        let layer_result = device_info
20654
0
            .customized_info
20655
0
            .borrow()
20656
0
            .hooks()
20657
0
            .cmd_set_vertex_input_ext(
20658
0
                command_buffer,
20659
0
                unsafe {
20660
0
                    std::slice::from_raw_parts(
20661
0
                        p_vertex_binding_descriptions,
20662
0
                        vertex_binding_description_count as usize,
20663
0
                    )
20664
0
                },
20665
0
                unsafe {
20666
0
                    std::slice::from_raw_parts(
20667
0
                        p_vertex_attribute_descriptions,
20668
0
                        vertex_attribute_description_count as usize,
20669
0
                    )
20670
0
                },
20671
0
            );
20672
0
        match layer_result {
20673
0
            LayerResult::Handled(res) => res,
20674
            LayerResult::Unhandled => unsafe {
20675
0
                (dispatch_table.cmd_set_vertex_input_ext)(
20676
0
                    command_buffer,
20677
0
                    vertex_binding_description_count,
20678
0
                    p_vertex_binding_descriptions,
20679
0
                    vertex_attribute_description_count,
20680
0
                    p_vertex_attribute_descriptions,
20681
0
                )
20682
            },
20683
        }
20684
0
    }
20685
0
    extern "system" fn get_memory_zircon_handle_fuchsia(
20686
0
        device: vk::Device,
20687
0
        p_get_zircon_handle_info: *const vk::MemoryGetZirconHandleInfoFUCHSIA,
20688
0
        p_zircon_handle: *mut vk::zx_handle_t,
20689
0
    ) -> vk::Result {
20690
0
        let global = Self::instance();
20691
0
        // vkGetMemoryZirconHandleFUCHSIA
20692
0
        let device_info = global.get_device_info(device).unwrap();
20693
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20694
0
        let layer_result = device_info
20695
0
            .customized_info
20696
0
            .borrow()
20697
0
            .hooks()
20698
0
            .get_memory_zircon_handle_fuchsia(
20699
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20700
0
            );
20701
0
        match layer_result {
20702
0
            LayerResult::Handled(res) => match res {
20703
0
                Ok(res) => {
20704
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20705
0
                    vk::Result::SUCCESS
20706
                }
20707
0
                Err(e) => e,
20708
            },
20709
            LayerResult::Unhandled => unsafe {
20710
0
                (dispatch_table.get_memory_zircon_handle_fuchsia)(
20711
0
                    device,
20712
0
                    p_get_zircon_handle_info,
20713
0
                    p_zircon_handle,
20714
0
                )
20715
            },
20716
        }
20717
0
    }
20718
0
    extern "system" fn get_memory_zircon_handle_properties_fuchsia(
20719
0
        device: vk::Device,
20720
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
20721
0
        zircon_handle: vk::zx_handle_t,
20722
0
        p_memory_zircon_handle_properties: *mut vk::MemoryZirconHandlePropertiesFUCHSIA,
20723
0
    ) -> vk::Result {
20724
0
        let global = Self::instance();
20725
0
        // vkGetMemoryZirconHandlePropertiesFUCHSIA
20726
0
        let device_info = global.get_device_info(device).unwrap();
20727
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20728
0
        let layer_result = device_info
20729
0
            .customized_info
20730
0
            .borrow()
20731
0
            .hooks()
20732
0
            .get_memory_zircon_handle_properties_fuchsia(
20733
0
                handle_type,
20734
0
                zircon_handle,
20735
0
                unsafe { p_memory_zircon_handle_properties.as_mut() }.unwrap(),
20736
0
            );
20737
0
        match layer_result {
20738
0
            LayerResult::Handled(res) => match res {
20739
0
                Ok(()) => vk::Result::SUCCESS,
20740
0
                Err(e) => e,
20741
            },
20742
            LayerResult::Unhandled => unsafe {
20743
0
                (dispatch_table.get_memory_zircon_handle_properties_fuchsia)(
20744
0
                    device,
20745
0
                    handle_type,
20746
0
                    zircon_handle,
20747
0
                    p_memory_zircon_handle_properties,
20748
0
                )
20749
            },
20750
        }
20751
0
    }
20752
0
    extern "system" fn import_semaphore_zircon_handle_fuchsia(
20753
0
        device: vk::Device,
20754
0
        p_import_semaphore_zircon_handle_info: *const vk::ImportSemaphoreZirconHandleInfoFUCHSIA,
20755
0
    ) -> vk::Result {
20756
0
        let global = Self::instance();
20757
0
        // vkImportSemaphoreZirconHandleFUCHSIA
20758
0
        let device_info = global.get_device_info(device).unwrap();
20759
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20760
0
        let layer_result = device_info
20761
0
            .customized_info
20762
0
            .borrow()
20763
0
            .hooks()
20764
0
            .import_semaphore_zircon_handle_fuchsia(
20765
0
                unsafe { p_import_semaphore_zircon_handle_info.as_ref() }.unwrap(),
20766
0
            );
20767
0
        match layer_result {
20768
0
            LayerResult::Handled(res) => match res {
20769
0
                Ok(()) => vk::Result::SUCCESS,
20770
0
                Err(e) => e,
20771
            },
20772
            LayerResult::Unhandled => unsafe {
20773
0
                (dispatch_table.import_semaphore_zircon_handle_fuchsia)(
20774
0
                    device,
20775
0
                    p_import_semaphore_zircon_handle_info,
20776
0
                )
20777
            },
20778
        }
20779
0
    }
20780
0
    extern "system" fn get_semaphore_zircon_handle_fuchsia(
20781
0
        device: vk::Device,
20782
0
        p_get_zircon_handle_info: *const vk::SemaphoreGetZirconHandleInfoFUCHSIA,
20783
0
        p_zircon_handle: *mut vk::zx_handle_t,
20784
0
    ) -> vk::Result {
20785
0
        let global = Self::instance();
20786
0
        // vkGetSemaphoreZirconHandleFUCHSIA
20787
0
        let device_info = global.get_device_info(device).unwrap();
20788
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20789
0
        let layer_result = device_info
20790
0
            .customized_info
20791
0
            .borrow()
20792
0
            .hooks()
20793
0
            .get_semaphore_zircon_handle_fuchsia(
20794
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20795
0
            );
20796
0
        match layer_result {
20797
0
            LayerResult::Handled(res) => match res {
20798
0
                Ok(res) => {
20799
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20800
0
                    vk::Result::SUCCESS
20801
                }
20802
0
                Err(e) => e,
20803
            },
20804
            LayerResult::Unhandled => unsafe {
20805
0
                (dispatch_table.get_semaphore_zircon_handle_fuchsia)(
20806
0
                    device,
20807
0
                    p_get_zircon_handle_info,
20808
0
                    p_zircon_handle,
20809
0
                )
20810
            },
20811
        }
20812
0
    }
20813
0
    extern "system" fn create_buffer_collection_fuchsia(
20814
0
        device: vk::Device,
20815
0
        p_create_info: *const vk::BufferCollectionCreateInfoFUCHSIA,
20816
0
        p_allocator: *const vk::AllocationCallbacks,
20817
0
        p_collection: *mut vk::BufferCollectionFUCHSIA,
20818
0
    ) -> vk::Result {
20819
0
        let global = Self::instance();
20820
0
        // vkCreateBufferCollectionFUCHSIA
20821
0
        let device_info = global.get_device_info(device).unwrap();
20822
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20823
0
        let layer_result = device_info
20824
0
            .customized_info
20825
0
            .borrow()
20826
0
            .hooks()
20827
0
            .create_buffer_collection_fuchsia(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
20828
0
                p_allocator.as_ref()
20829
0
            });
20830
0
        match layer_result {
20831
0
            LayerResult::Handled(res) => match res {
20832
0
                Ok(res) => {
20833
0
                    *unsafe { p_collection.as_mut() }.unwrap() = res;
20834
0
                    vk::Result::SUCCESS
20835
                }
20836
0
                Err(e) => e,
20837
            },
20838
            LayerResult::Unhandled => unsafe {
20839
0
                (dispatch_table.create_buffer_collection_fuchsia)(
20840
0
                    device,
20841
0
                    p_create_info,
20842
0
                    p_allocator,
20843
0
                    p_collection,
20844
0
                )
20845
            },
20846
        }
20847
0
    }
20848
0
    extern "system" fn set_buffer_collection_image_constraints_fuchsia(
20849
0
        device: vk::Device,
20850
0
        collection: vk::BufferCollectionFUCHSIA,
20851
0
        p_image_constraints_info: *const vk::ImageConstraintsInfoFUCHSIA,
20852
0
    ) -> vk::Result {
20853
0
        let global = Self::instance();
20854
0
        // vkSetBufferCollectionImageConstraintsFUCHSIA
20855
0
        let device_info = global.get_device_info(device).unwrap();
20856
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20857
0
        let layer_result = device_info
20858
0
            .customized_info
20859
0
            .borrow()
20860
0
            .hooks()
20861
0
            .set_buffer_collection_image_constraints_fuchsia(
20862
0
                collection,
20863
0
                unsafe { p_image_constraints_info.as_ref() }.unwrap(),
20864
0
            );
20865
0
        match layer_result {
20866
0
            LayerResult::Handled(res) => match res {
20867
0
                Ok(()) => vk::Result::SUCCESS,
20868
0
                Err(e) => e,
20869
            },
20870
            LayerResult::Unhandled => unsafe {
20871
0
                (dispatch_table.set_buffer_collection_image_constraints_fuchsia)(
20872
0
                    device,
20873
0
                    collection,
20874
0
                    p_image_constraints_info,
20875
0
                )
20876
            },
20877
        }
20878
0
    }
20879
0
    extern "system" fn set_buffer_collection_buffer_constraints_fuchsia(
20880
0
        device: vk::Device,
20881
0
        collection: vk::BufferCollectionFUCHSIA,
20882
0
        p_buffer_constraints_info: *const vk::BufferConstraintsInfoFUCHSIA,
20883
0
    ) -> vk::Result {
20884
0
        let global = Self::instance();
20885
0
        // vkSetBufferCollectionBufferConstraintsFUCHSIA
20886
0
        let device_info = global.get_device_info(device).unwrap();
20887
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20888
0
        let layer_result = device_info
20889
0
            .customized_info
20890
0
            .borrow()
20891
0
            .hooks()
20892
0
            .set_buffer_collection_buffer_constraints_fuchsia(
20893
0
                collection,
20894
0
                unsafe { p_buffer_constraints_info.as_ref() }.unwrap(),
20895
0
            );
20896
0
        match layer_result {
20897
0
            LayerResult::Handled(res) => match res {
20898
0
                Ok(()) => vk::Result::SUCCESS,
20899
0
                Err(e) => e,
20900
            },
20901
            LayerResult::Unhandled => unsafe {
20902
0
                (dispatch_table.set_buffer_collection_buffer_constraints_fuchsia)(
20903
0
                    device,
20904
0
                    collection,
20905
0
                    p_buffer_constraints_info,
20906
0
                )
20907
            },
20908
        }
20909
0
    }
20910
0
    extern "system" fn destroy_buffer_collection_fuchsia(
20911
0
        device: vk::Device,
20912
0
        collection: vk::BufferCollectionFUCHSIA,
20913
0
        p_allocator: *const vk::AllocationCallbacks,
20914
0
    ) {
20915
0
        let global = Self::instance();
20916
0
        // vkDestroyBufferCollectionFUCHSIA
20917
0
        let device_info = global.get_device_info(device).unwrap();
20918
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20919
0
        let layer_result = device_info
20920
0
            .customized_info
20921
0
            .borrow()
20922
0
            .hooks()
20923
0
            .destroy_buffer_collection_fuchsia(collection, unsafe { p_allocator.as_ref() });
20924
0
        match layer_result {
20925
0
            LayerResult::Handled(res) => res,
20926
            LayerResult::Unhandled => unsafe {
20927
0
                (dispatch_table.destroy_buffer_collection_fuchsia)(device, collection, p_allocator)
20928
            },
20929
        }
20930
0
    }
20931
0
    extern "system" fn get_buffer_collection_properties_fuchsia(
20932
0
        device: vk::Device,
20933
0
        collection: vk::BufferCollectionFUCHSIA,
20934
0
        p_properties: *mut vk::BufferCollectionPropertiesFUCHSIA,
20935
0
    ) -> vk::Result {
20936
0
        let global = Self::instance();
20937
0
        // vkGetBufferCollectionPropertiesFUCHSIA
20938
0
        let device_info = global.get_device_info(device).unwrap();
20939
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20940
0
        let layer_result = device_info
20941
0
            .customized_info
20942
0
            .borrow()
20943
0
            .hooks()
20944
0
            .get_buffer_collection_properties_fuchsia(
20945
0
                collection,
20946
0
                unsafe { p_properties.as_mut() }.unwrap(),
20947
0
            );
20948
0
        match layer_result {
20949
0
            LayerResult::Handled(res) => match res {
20950
0
                Ok(()) => vk::Result::SUCCESS,
20951
0
                Err(e) => e,
20952
            },
20953
            LayerResult::Unhandled => unsafe {
20954
0
                (dispatch_table.get_buffer_collection_properties_fuchsia)(
20955
0
                    device,
20956
0
                    collection,
20957
0
                    p_properties,
20958
0
                )
20959
            },
20960
        }
20961
0
    }
20962
0
    extern "system" fn get_device_subpass_shading_max_workgroup_size_huawei(
20963
0
        device: vk::Device,
20964
0
        renderpass: vk::RenderPass,
20965
0
        p_max_workgroup_size: *mut vk::Extent2D,
20966
0
    ) -> vk::Result {
20967
0
        let global = Self::instance();
20968
0
        // vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI
20969
0
        let device_info = global.get_device_info(device).unwrap();
20970
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20971
0
        let layer_result = device_info
20972
0
            .customized_info
20973
0
            .borrow()
20974
0
            .hooks()
20975
0
            .get_device_subpass_shading_max_workgroup_size_huawei(
20976
0
                renderpass,
20977
0
                unsafe { p_max_workgroup_size.as_mut() }.unwrap(),
20978
0
            );
20979
0
        match layer_result {
20980
0
            LayerResult::Handled(res) => match res {
20981
0
                Ok(()) => vk::Result::SUCCESS,
20982
0
                Err(e) => e,
20983
            },
20984
            LayerResult::Unhandled => unsafe {
20985
0
                (dispatch_table.get_device_subpass_shading_max_workgroup_size_huawei)(
20986
0
                    device,
20987
0
                    renderpass,
20988
0
                    p_max_workgroup_size,
20989
0
                )
20990
            },
20991
        }
20992
0
    }
20993
0
    extern "system" fn cmd_subpass_shading_huawei(command_buffer: vk::CommandBuffer) {
20994
0
        let global = Self::instance();
20995
0
        // vkCmdSubpassShadingHUAWEI
20996
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20997
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20998
0
        let layer_result = device_info
20999
0
            .customized_info
21000
0
            .borrow()
21001
0
            .hooks()
21002
0
            .cmd_subpass_shading_huawei(command_buffer);
21003
0
        match layer_result {
21004
0
            LayerResult::Handled(res) => res,
21005
            LayerResult::Unhandled => unsafe {
21006
0
                (dispatch_table.cmd_subpass_shading_huawei)(command_buffer)
21007
            },
21008
        }
21009
0
    }
21010
0
    extern "system" fn cmd_bind_invocation_mask_huawei(
21011
0
        command_buffer: vk::CommandBuffer,
21012
0
        image_view: vk::ImageView,
21013
0
        image_layout: vk::ImageLayout,
21014
0
    ) {
21015
0
        let global = Self::instance();
21016
0
        // vkCmdBindInvocationMaskHUAWEI
21017
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21018
0
        let dispatch_table = &device_info.dispatch_table.huawei_invocation_mask;
21019
0
        let layer_result = device_info
21020
0
            .customized_info
21021
0
            .borrow()
21022
0
            .hooks()
21023
0
            .cmd_bind_invocation_mask_huawei(command_buffer, image_view, image_layout);
21024
0
        match layer_result {
21025
0
            LayerResult::Handled(res) => res,
21026
            LayerResult::Unhandled => unsafe {
21027
0
                (dispatch_table.cmd_bind_invocation_mask_huawei)(
21028
0
                    command_buffer,
21029
0
                    image_view,
21030
0
                    image_layout,
21031
0
                )
21032
            },
21033
        }
21034
0
    }
21035
0
    extern "system" fn get_memory_remote_address_nv(
21036
0
        device: vk::Device,
21037
0
        p_memory_get_remote_address_info: *const vk::MemoryGetRemoteAddressInfoNV,
21038
0
        p_address: *mut vk::RemoteAddressNV,
21039
0
    ) -> vk::Result {
21040
0
        let global = Self::instance();
21041
0
        // vkGetMemoryRemoteAddressNV
21042
0
        let device_info = global.get_device_info(device).unwrap();
21043
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_rdma;
21044
0
        let layer_result = device_info
21045
0
            .customized_info
21046
0
            .borrow()
21047
0
            .hooks()
21048
0
            .get_memory_remote_address_nv(
21049
0
                unsafe { p_memory_get_remote_address_info.as_ref() }.unwrap(),
21050
0
            );
21051
0
        match layer_result {
21052
0
            LayerResult::Handled(res) => match res {
21053
0
                Ok(res) => {
21054
0
                    *unsafe { p_address.as_mut() }.unwrap() = res;
21055
0
                    vk::Result::SUCCESS
21056
                }
21057
0
                Err(e) => e,
21058
            },
21059
            LayerResult::Unhandled => unsafe {
21060
0
                (dispatch_table.get_memory_remote_address_nv)(
21061
0
                    device,
21062
0
                    p_memory_get_remote_address_info,
21063
0
                    p_address,
21064
0
                )
21065
            },
21066
        }
21067
0
    }
21068
0
    extern "system" fn get_pipeline_properties_ext(
21069
0
        device: vk::Device,
21070
0
        p_pipeline_info: *const vk::PipelineInfoEXT,
21071
0
        p_pipeline_properties: *mut vk::BaseOutStructure,
21072
0
    ) -> vk::Result {
21073
0
        let global = Self::instance();
21074
0
        // vkGetPipelinePropertiesEXT
21075
0
        let device_info = global.get_device_info(device).unwrap();
21076
0
        let dispatch_table = &device_info.dispatch_table.ext_pipeline_properties;
21077
0
        let layer_result = device_info
21078
0
            .customized_info
21079
0
            .borrow()
21080
0
            .hooks()
21081
0
            .get_pipeline_properties_ext(
21082
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
21083
0
                unsafe { p_pipeline_properties.as_mut() }.unwrap(),
21084
0
            );
21085
0
        match layer_result {
21086
0
            LayerResult::Handled(res) => match res {
21087
0
                Ok(()) => vk::Result::SUCCESS,
21088
0
                Err(e) => e,
21089
            },
21090
            LayerResult::Unhandled => unsafe {
21091
0
                (dispatch_table.get_pipeline_properties_ext)(
21092
0
                    device,
21093
0
                    p_pipeline_info,
21094
0
                    p_pipeline_properties,
21095
0
                )
21096
            },
21097
        }
21098
0
    }
21099
0
    extern "system" fn cmd_set_patch_control_points_ext(
21100
0
        command_buffer: vk::CommandBuffer,
21101
0
        patch_control_points: u32,
21102
0
    ) {
21103
0
        let global = Self::instance();
21104
0
        // vkCmdSetPatchControlPointsEXT
21105
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21106
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
21107
0
        let layer_result = device_info
21108
0
            .customized_info
21109
0
            .borrow()
21110
0
            .hooks()
21111
0
            .cmd_set_patch_control_points_ext(command_buffer, patch_control_points);
21112
0
        match layer_result {
21113
0
            LayerResult::Handled(res) => res,
21114
            LayerResult::Unhandled => unsafe {
21115
0
                (dispatch_table.cmd_set_patch_control_points_ext)(
21116
0
                    command_buffer,
21117
0
                    patch_control_points,
21118
0
                )
21119
            },
21120
        }
21121
0
    }
21122
0
    extern "system" fn cmd_set_logic_op_ext(
21123
0
        command_buffer: vk::CommandBuffer,
21124
0
        logic_op: vk::LogicOp,
21125
0
    ) {
21126
0
        let global = Self::instance();
21127
0
        // vkCmdSetLogicOpEXT
21128
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21129
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
21130
0
        let layer_result = device_info
21131
0
            .customized_info
21132
0
            .borrow()
21133
0
            .hooks()
21134
0
            .cmd_set_logic_op_ext(command_buffer, logic_op);
21135
0
        match layer_result {
21136
0
            LayerResult::Handled(res) => res,
21137
            LayerResult::Unhandled => unsafe {
21138
0
                (dispatch_table.cmd_set_logic_op_ext)(command_buffer, logic_op)
21139
            },
21140
        }
21141
0
    }
21142
0
    extern "system" fn cmd_set_color_write_enable_ext(
21143
0
        command_buffer: vk::CommandBuffer,
21144
0
        attachment_count: u32,
21145
0
        p_color_write_enables: *const vk::Bool32,
21146
0
    ) {
21147
0
        let global = Self::instance();
21148
0
        // vkCmdSetColorWriteEnableEXT
21149
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21150
0
        let dispatch_table = &device_info.dispatch_table.ext_color_write_enable;
21151
0
        #[allow(clippy::unnecessary_cast)]
21152
0
        let layer_result = device_info
21153
0
            .customized_info
21154
0
            .borrow()
21155
0
            .hooks()
21156
0
            .cmd_set_color_write_enable_ext(
21157
0
                command_buffer,
21158
0
                unsafe {
21159
0
                    std::slice::from_raw_parts(p_color_write_enables, attachment_count as usize)
21160
0
                }
21161
0
                .iter()
21162
0
                .map(|v| *v == vk::TRUE),
21163
0
            );
21164
0
        match layer_result {
21165
0
            LayerResult::Handled(res) => res,
21166
            LayerResult::Unhandled => unsafe {
21167
0
                (dispatch_table.cmd_set_color_write_enable_ext)(
21168
0
                    command_buffer,
21169
0
                    attachment_count,
21170
0
                    p_color_write_enables,
21171
0
                )
21172
            },
21173
        }
21174
0
    }
21175
0
    extern "system" fn cmd_draw_multi_ext(
21176
0
        command_buffer: vk::CommandBuffer,
21177
0
        draw_count: u32,
21178
0
        p_vertex_info: *const vk::MultiDrawInfoEXT,
21179
0
        instance_count: u32,
21180
0
        first_instance: u32,
21181
0
        stride: u32,
21182
0
    ) {
21183
0
        let global = Self::instance();
21184
0
        // vkCmdDrawMultiEXT
21185
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21186
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
21187
0
        #[allow(clippy::unnecessary_cast)]
21188
0
        let layer_result = device_info
21189
0
            .customized_info
21190
0
            .borrow()
21191
0
            .hooks()
21192
0
            .cmd_draw_multi_ext(
21193
0
                command_buffer,
21194
0
                unsafe { std::slice::from_raw_parts(p_vertex_info, draw_count as usize) },
21195
0
                instance_count,
21196
0
                first_instance,
21197
0
                stride,
21198
0
            );
21199
0
        match layer_result {
21200
0
            LayerResult::Handled(res) => res,
21201
            LayerResult::Unhandled => unsafe {
21202
0
                (dispatch_table.cmd_draw_multi_ext)(
21203
0
                    command_buffer,
21204
0
                    draw_count,
21205
0
                    p_vertex_info,
21206
0
                    instance_count,
21207
0
                    first_instance,
21208
0
                    stride,
21209
0
                )
21210
            },
21211
        }
21212
0
    }
21213
0
    extern "system" fn cmd_draw_multi_indexed_ext(
21214
0
        command_buffer: vk::CommandBuffer,
21215
0
        draw_count: u32,
21216
0
        p_index_info: *const vk::MultiDrawIndexedInfoEXT,
21217
0
        instance_count: u32,
21218
0
        first_instance: u32,
21219
0
        stride: u32,
21220
0
        p_vertex_offset: *const i32,
21221
0
    ) {
21222
0
        let global = Self::instance();
21223
0
        // vkCmdDrawMultiIndexedEXT
21224
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21225
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
21226
0
        #[allow(clippy::unnecessary_cast)]
21227
0
        let layer_result = device_info
21228
0
            .customized_info
21229
0
            .borrow()
21230
0
            .hooks()
21231
0
            .cmd_draw_multi_indexed_ext(
21232
0
                command_buffer,
21233
0
                unsafe { std::slice::from_raw_parts(p_index_info, draw_count as usize) },
21234
0
                instance_count,
21235
0
                first_instance,
21236
0
                stride,
21237
0
                unsafe { p_vertex_offset.as_ref() },
21238
0
            );
21239
0
        match layer_result {
21240
0
            LayerResult::Handled(res) => res,
21241
            LayerResult::Unhandled => unsafe {
21242
0
                (dispatch_table.cmd_draw_multi_indexed_ext)(
21243
0
                    command_buffer,
21244
0
                    draw_count,
21245
0
                    p_index_info,
21246
0
                    instance_count,
21247
0
                    first_instance,
21248
0
                    stride,
21249
0
                    p_vertex_offset,
21250
0
                )
21251
            },
21252
        }
21253
0
    }
21254
0
    extern "system" fn create_micromap_ext(
21255
0
        device: vk::Device,
21256
0
        p_create_info: *const vk::MicromapCreateInfoEXT,
21257
0
        p_allocator: *const vk::AllocationCallbacks,
21258
0
        p_micromap: *mut vk::MicromapEXT,
21259
0
    ) -> vk::Result {
21260
0
        let global = Self::instance();
21261
0
        // vkCreateMicromapEXT
21262
0
        let device_info = global.get_device_info(device).unwrap();
21263
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21264
0
        let layer_result = device_info
21265
0
            .customized_info
21266
0
            .borrow()
21267
0
            .hooks()
21268
0
            .create_micromap_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
21269
0
                p_allocator.as_ref()
21270
0
            });
21271
0
        match layer_result {
21272
0
            LayerResult::Handled(res) => match res {
21273
0
                Ok(res) => {
21274
0
                    *unsafe { p_micromap.as_mut() }.unwrap() = res;
21275
0
                    vk::Result::SUCCESS
21276
                }
21277
0
                Err(e) => e,
21278
            },
21279
            LayerResult::Unhandled => unsafe {
21280
0
                (dispatch_table.create_micromap_ext)(device, p_create_info, p_allocator, p_micromap)
21281
            },
21282
        }
21283
0
    }
21284
0
    extern "system" fn destroy_micromap_ext(
21285
0
        device: vk::Device,
21286
0
        micromap: vk::MicromapEXT,
21287
0
        p_allocator: *const vk::AllocationCallbacks,
21288
0
    ) {
21289
0
        let global = Self::instance();
21290
0
        // vkDestroyMicromapEXT
21291
0
        let device_info = global.get_device_info(device).unwrap();
21292
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21293
0
        let layer_result = device_info
21294
0
            .customized_info
21295
0
            .borrow()
21296
0
            .hooks()
21297
0
            .destroy_micromap_ext(micromap, unsafe { p_allocator.as_ref() });
21298
0
        match layer_result {
21299
0
            LayerResult::Handled(res) => res,
21300
            LayerResult::Unhandled => unsafe {
21301
0
                (dispatch_table.destroy_micromap_ext)(device, micromap, p_allocator)
21302
            },
21303
        }
21304
0
    }
21305
0
    extern "system" fn cmd_build_micromaps_ext(
21306
0
        command_buffer: vk::CommandBuffer,
21307
0
        info_count: u32,
21308
0
        p_infos: *const vk::MicromapBuildInfoEXT,
21309
0
    ) {
21310
0
        let global = Self::instance();
21311
0
        // vkCmdBuildMicromapsEXT
21312
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21313
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21314
0
        #[allow(clippy::unnecessary_cast)]
21315
0
        let layer_result = device_info
21316
0
            .customized_info
21317
0
            .borrow()
21318
0
            .hooks()
21319
0
            .cmd_build_micromaps_ext(command_buffer, unsafe {
21320
0
                std::slice::from_raw_parts(p_infos, info_count as usize)
21321
0
            });
21322
0
        match layer_result {
21323
0
            LayerResult::Handled(res) => res,
21324
            LayerResult::Unhandled => unsafe {
21325
0
                (dispatch_table.cmd_build_micromaps_ext)(command_buffer, info_count, p_infos)
21326
            },
21327
        }
21328
0
    }
21329
0
    extern "system" fn build_micromaps_ext(
21330
0
        device: vk::Device,
21331
0
        deferred_operation: vk::DeferredOperationKHR,
21332
0
        info_count: u32,
21333
0
        p_infos: *const vk::MicromapBuildInfoEXT,
21334
0
    ) -> vk::Result {
21335
0
        let global = Self::instance();
21336
0
        // vkBuildMicromapsEXT
21337
0
        let device_info = global.get_device_info(device).unwrap();
21338
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21339
0
        #[allow(clippy::unnecessary_cast)]
21340
0
        let layer_result = device_info
21341
0
            .customized_info
21342
0
            .borrow()
21343
0
            .hooks()
21344
0
            .build_micromaps_ext(deferred_operation, unsafe {
21345
0
                std::slice::from_raw_parts(p_infos, info_count as usize)
21346
0
            });
21347
0
        match layer_result {
21348
0
            LayerResult::Handled(res) => match res {
21349
0
                Ok(()) => vk::Result::SUCCESS,
21350
0
                Err(e) => e,
21351
            },
21352
            LayerResult::Unhandled => unsafe {
21353
0
                (dispatch_table.build_micromaps_ext)(
21354
0
                    device,
21355
0
                    deferred_operation,
21356
0
                    info_count,
21357
0
                    p_infos,
21358
0
                )
21359
            },
21360
        }
21361
0
    }
21362
0
    extern "system" fn copy_micromap_ext(
21363
0
        device: vk::Device,
21364
0
        deferred_operation: vk::DeferredOperationKHR,
21365
0
        p_info: *const vk::CopyMicromapInfoEXT,
21366
0
    ) -> vk::Result {
21367
0
        let global = Self::instance();
21368
0
        // vkCopyMicromapEXT
21369
0
        let device_info = global.get_device_info(device).unwrap();
21370
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21371
0
        let layer_result = device_info
21372
0
            .customized_info
21373
0
            .borrow()
21374
0
            .hooks()
21375
0
            .copy_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21376
0
        match layer_result {
21377
0
            LayerResult::Handled(res) => match res {
21378
0
                Ok(()) => vk::Result::SUCCESS,
21379
0
                Err(e) => e,
21380
            },
21381
            LayerResult::Unhandled => unsafe {
21382
0
                (dispatch_table.copy_micromap_ext)(device, deferred_operation, p_info)
21383
            },
21384
        }
21385
0
    }
21386
0
    extern "system" fn copy_micromap_to_memory_ext(
21387
0
        device: vk::Device,
21388
0
        deferred_operation: vk::DeferredOperationKHR,
21389
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21390
0
    ) -> vk::Result {
21391
0
        let global = Self::instance();
21392
0
        // vkCopyMicromapToMemoryEXT
21393
0
        let device_info = global.get_device_info(device).unwrap();
21394
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21395
0
        let layer_result = device_info
21396
0
            .customized_info
21397
0
            .borrow()
21398
0
            .hooks()
21399
0
            .copy_micromap_to_memory_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21400
0
        match layer_result {
21401
0
            LayerResult::Handled(res) => match res {
21402
0
                Ok(()) => vk::Result::SUCCESS,
21403
0
                Err(e) => e,
21404
            },
21405
            LayerResult::Unhandled => unsafe {
21406
0
                (dispatch_table.copy_micromap_to_memory_ext)(device, deferred_operation, p_info)
21407
            },
21408
        }
21409
0
    }
21410
0
    extern "system" fn copy_memory_to_micromap_ext(
21411
0
        device: vk::Device,
21412
0
        deferred_operation: vk::DeferredOperationKHR,
21413
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21414
0
    ) -> vk::Result {
21415
0
        let global = Self::instance();
21416
0
        // vkCopyMemoryToMicromapEXT
21417
0
        let device_info = global.get_device_info(device).unwrap();
21418
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21419
0
        let layer_result = device_info
21420
0
            .customized_info
21421
0
            .borrow()
21422
0
            .hooks()
21423
0
            .copy_memory_to_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21424
0
        match layer_result {
21425
0
            LayerResult::Handled(res) => match res {
21426
0
                Ok(()) => vk::Result::SUCCESS,
21427
0
                Err(e) => e,
21428
            },
21429
            LayerResult::Unhandled => unsafe {
21430
0
                (dispatch_table.copy_memory_to_micromap_ext)(device, deferred_operation, p_info)
21431
            },
21432
        }
21433
0
    }
21434
0
    extern "system" fn write_micromaps_properties_ext(
21435
0
        device: vk::Device,
21436
0
        micromap_count: u32,
21437
0
        p_micromaps: *const vk::MicromapEXT,
21438
0
        query_type: vk::QueryType,
21439
0
        data_size: usize,
21440
0
        p_data: *mut c_void,
21441
0
        stride: usize,
21442
0
    ) -> vk::Result {
21443
0
        let global = Self::instance();
21444
0
        // vkWriteMicromapsPropertiesEXT
21445
0
        let device_info = global.get_device_info(device).unwrap();
21446
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21447
0
        #[allow(clippy::unnecessary_cast)]
21448
0
        #[allow(clippy::unnecessary_cast)]
21449
0
        let layer_result = device_info
21450
0
            .customized_info
21451
0
            .borrow()
21452
0
            .hooks()
21453
0
            .write_micromaps_properties_ext(
21454
0
                unsafe { std::slice::from_raw_parts(p_micromaps, micromap_count as usize) },
21455
0
                query_type,
21456
0
                unsafe { std::slice::from_raw_parts_mut(p_data as *mut u8, data_size as usize) },
21457
0
                stride,
21458
0
            );
21459
0
        match layer_result {
21460
0
            LayerResult::Handled(res) => match res {
21461
0
                Ok(()) => vk::Result::SUCCESS,
21462
0
                Err(e) => e,
21463
            },
21464
            LayerResult::Unhandled => unsafe {
21465
0
                (dispatch_table.write_micromaps_properties_ext)(
21466
0
                    device,
21467
0
                    micromap_count,
21468
0
                    p_micromaps,
21469
0
                    query_type,
21470
0
                    data_size,
21471
0
                    p_data,
21472
0
                    stride,
21473
0
                )
21474
            },
21475
        }
21476
0
    }
21477
0
    extern "system" fn cmd_copy_micromap_ext(
21478
0
        command_buffer: vk::CommandBuffer,
21479
0
        p_info: *const vk::CopyMicromapInfoEXT,
21480
0
    ) {
21481
0
        let global = Self::instance();
21482
0
        // vkCmdCopyMicromapEXT
21483
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21484
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21485
0
        let layer_result = device_info
21486
0
            .customized_info
21487
0
            .borrow()
21488
0
            .hooks()
21489
0
            .cmd_copy_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21490
0
        match layer_result {
21491
0
            LayerResult::Handled(res) => res,
21492
            LayerResult::Unhandled => unsafe {
21493
0
                (dispatch_table.cmd_copy_micromap_ext)(command_buffer, p_info)
21494
            },
21495
        }
21496
0
    }
21497
0
    extern "system" fn cmd_copy_micromap_to_memory_ext(
21498
0
        command_buffer: vk::CommandBuffer,
21499
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21500
0
    ) {
21501
0
        let global = Self::instance();
21502
0
        // vkCmdCopyMicromapToMemoryEXT
21503
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21504
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21505
0
        let layer_result = device_info
21506
0
            .customized_info
21507
0
            .borrow()
21508
0
            .hooks()
21509
0
            .cmd_copy_micromap_to_memory_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21510
0
        match layer_result {
21511
0
            LayerResult::Handled(res) => res,
21512
            LayerResult::Unhandled => unsafe {
21513
0
                (dispatch_table.cmd_copy_micromap_to_memory_ext)(command_buffer, p_info)
21514
            },
21515
        }
21516
0
    }
21517
0
    extern "system" fn cmd_copy_memory_to_micromap_ext(
21518
0
        command_buffer: vk::CommandBuffer,
21519
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21520
0
    ) {
21521
0
        let global = Self::instance();
21522
0
        // vkCmdCopyMemoryToMicromapEXT
21523
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21524
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21525
0
        let layer_result = device_info
21526
0
            .customized_info
21527
0
            .borrow()
21528
0
            .hooks()
21529
0
            .cmd_copy_memory_to_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21530
0
        match layer_result {
21531
0
            LayerResult::Handled(res) => res,
21532
            LayerResult::Unhandled => unsafe {
21533
0
                (dispatch_table.cmd_copy_memory_to_micromap_ext)(command_buffer, p_info)
21534
            },
21535
        }
21536
0
    }
21537
0
    extern "system" fn cmd_write_micromaps_properties_ext(
21538
0
        command_buffer: vk::CommandBuffer,
21539
0
        micromap_count: u32,
21540
0
        p_micromaps: *const vk::MicromapEXT,
21541
0
        query_type: vk::QueryType,
21542
0
        query_pool: vk::QueryPool,
21543
0
        first_query: u32,
21544
0
    ) {
21545
0
        let global = Self::instance();
21546
0
        // vkCmdWriteMicromapsPropertiesEXT
21547
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21548
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21549
0
        #[allow(clippy::unnecessary_cast)]
21550
0
        let layer_result = device_info
21551
0
            .customized_info
21552
0
            .borrow()
21553
0
            .hooks()
21554
0
            .cmd_write_micromaps_properties_ext(
21555
0
                command_buffer,
21556
0
                unsafe { std::slice::from_raw_parts(p_micromaps, micromap_count as usize) },
21557
0
                query_type,
21558
0
                query_pool,
21559
0
                first_query,
21560
0
            );
21561
0
        match layer_result {
21562
0
            LayerResult::Handled(res) => res,
21563
            LayerResult::Unhandled => unsafe {
21564
0
                (dispatch_table.cmd_write_micromaps_properties_ext)(
21565
0
                    command_buffer,
21566
0
                    micromap_count,
21567
0
                    p_micromaps,
21568
0
                    query_type,
21569
0
                    query_pool,
21570
0
                    first_query,
21571
0
                )
21572
            },
21573
        }
21574
0
    }
21575
0
    extern "system" fn get_device_micromap_compatibility_ext(
21576
0
        device: vk::Device,
21577
0
        p_version_info: *const vk::MicromapVersionInfoEXT,
21578
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
21579
0
    ) {
21580
0
        let global = Self::instance();
21581
0
        // vkGetDeviceMicromapCompatibilityEXT
21582
0
        let device_info = global.get_device_info(device).unwrap();
21583
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21584
0
        let layer_result = device_info
21585
0
            .customized_info
21586
0
            .borrow()
21587
0
            .hooks()
21588
0
            .get_device_micromap_compatibility_ext(unsafe { p_version_info.as_ref() }.unwrap());
21589
0
        match layer_result {
21590
0
            LayerResult::Handled(res) => {
21591
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
21592
0
            }
21593
            LayerResult::Unhandled => unsafe {
21594
0
                (dispatch_table.get_device_micromap_compatibility_ext)(
21595
0
                    device,
21596
0
                    p_version_info,
21597
0
                    p_compatibility,
21598
0
                )
21599
            },
21600
        }
21601
0
    }
21602
0
    extern "system" fn get_micromap_build_sizes_ext(
21603
0
        device: vk::Device,
21604
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
21605
0
        p_build_info: *const vk::MicromapBuildInfoEXT,
21606
0
        p_size_info: *mut vk::MicromapBuildSizesInfoEXT,
21607
0
    ) {
21608
0
        let global = Self::instance();
21609
0
        // vkGetMicromapBuildSizesEXT
21610
0
        let device_info = global.get_device_info(device).unwrap();
21611
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21612
0
        let layer_result = device_info
21613
0
            .customized_info
21614
0
            .borrow()
21615
0
            .hooks()
21616
0
            .get_micromap_build_sizes_ext(
21617
0
                build_type,
21618
0
                unsafe { p_build_info.as_ref() }.unwrap(),
21619
0
                unsafe { p_size_info.as_mut() }.unwrap(),
21620
0
            );
21621
0
        match layer_result {
21622
0
            LayerResult::Handled(res) => res,
21623
            LayerResult::Unhandled => unsafe {
21624
0
                (dispatch_table.get_micromap_build_sizes_ext)(
21625
0
                    device,
21626
0
                    build_type,
21627
0
                    p_build_info,
21628
0
                    p_size_info,
21629
0
                )
21630
            },
21631
        }
21632
0
    }
21633
0
    extern "system" fn set_device_memory_priority_ext(
21634
0
        device: vk::Device,
21635
0
        memory: vk::DeviceMemory,
21636
0
        priority: f32,
21637
0
    ) {
21638
0
        let global = Self::instance();
21639
0
        // vkSetDeviceMemoryPriorityEXT
21640
0
        let device_info = global.get_device_info(device).unwrap();
21641
0
        let dispatch_table = &device_info.dispatch_table.ext_pageable_device_local_memory;
21642
0
        let layer_result = device_info
21643
0
            .customized_info
21644
0
            .borrow()
21645
0
            .hooks()
21646
0
            .set_device_memory_priority_ext(memory, priority);
21647
0
        match layer_result {
21648
0
            LayerResult::Handled(res) => res,
21649
            LayerResult::Unhandled => unsafe {
21650
0
                (dispatch_table.set_device_memory_priority_ext)(device, memory, priority)
21651
            },
21652
        }
21653
0
    }
21654
0
    extern "system" fn get_descriptor_set_layout_host_mapping_info_valve(
21655
0
        device: vk::Device,
21656
0
        p_binding_reference: *const vk::DescriptorSetBindingReferenceVALVE,
21657
0
        p_host_mapping: *mut vk::DescriptorSetLayoutHostMappingInfoVALVE,
21658
0
    ) {
21659
0
        let global = Self::instance();
21660
0
        // vkGetDescriptorSetLayoutHostMappingInfoVALVE
21661
0
        let device_info = global.get_device_info(device).unwrap();
21662
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21663
0
        let layer_result = device_info
21664
0
            .customized_info
21665
0
            .borrow()
21666
0
            .hooks()
21667
0
            .get_descriptor_set_layout_host_mapping_info_valve(
21668
0
                unsafe { p_binding_reference.as_ref() }.unwrap(),
21669
0
                unsafe { p_host_mapping.as_mut() }.unwrap(),
21670
0
            );
21671
0
        match layer_result {
21672
0
            LayerResult::Handled(res) => res,
21673
            LayerResult::Unhandled => unsafe {
21674
0
                (dispatch_table.get_descriptor_set_layout_host_mapping_info_valve)(
21675
0
                    device,
21676
0
                    p_binding_reference,
21677
0
                    p_host_mapping,
21678
0
                )
21679
            },
21680
        }
21681
0
    }
21682
0
    extern "system" fn get_descriptor_set_host_mapping_valve(
21683
0
        device: vk::Device,
21684
0
        descriptor_set: vk::DescriptorSet,
21685
0
        pp_data: *mut *mut c_void,
21686
0
    ) {
21687
0
        let global = Self::instance();
21688
0
        // vkGetDescriptorSetHostMappingVALVE
21689
0
        let device_info = global.get_device_info(device).unwrap();
21690
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21691
0
        let layer_result = device_info
21692
0
            .customized_info
21693
0
            .borrow()
21694
0
            .hooks()
21695
0
            .get_descriptor_set_host_mapping_valve(descriptor_set);
21696
0
        match layer_result {
21697
0
            LayerResult::Handled(res) => {
21698
0
                *unsafe { pp_data.as_mut() }.unwrap() = res;
21699
0
            }
21700
            LayerResult::Unhandled => unsafe {
21701
0
                (dispatch_table.get_descriptor_set_host_mapping_valve)(
21702
0
                    device,
21703
0
                    descriptor_set,
21704
0
                    pp_data,
21705
0
                )
21706
            },
21707
        }
21708
0
    }
21709
0
    extern "system" fn cmd_copy_memory_indirect_nv(
21710
0
        command_buffer: vk::CommandBuffer,
21711
0
        copy_buffer_address: vk::DeviceAddress,
21712
0
        copy_count: u32,
21713
0
        stride: u32,
21714
0
    ) {
21715
0
        let global = Self::instance();
21716
0
        // vkCmdCopyMemoryIndirectNV
21717
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21718
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21719
0
        let layer_result = device_info
21720
0
            .customized_info
21721
0
            .borrow()
21722
0
            .hooks()
21723
0
            .cmd_copy_memory_indirect_nv(command_buffer, copy_buffer_address, copy_count, stride);
21724
0
        match layer_result {
21725
0
            LayerResult::Handled(res) => res,
21726
            LayerResult::Unhandled => unsafe {
21727
0
                (dispatch_table.cmd_copy_memory_indirect_nv)(
21728
0
                    command_buffer,
21729
0
                    copy_buffer_address,
21730
0
                    copy_count,
21731
0
                    stride,
21732
0
                )
21733
            },
21734
        }
21735
0
    }
21736
0
    extern "system" fn cmd_copy_memory_to_image_indirect_nv(
21737
0
        command_buffer: vk::CommandBuffer,
21738
0
        copy_buffer_address: vk::DeviceAddress,
21739
0
        copy_count: u32,
21740
0
        stride: u32,
21741
0
        dst_image: vk::Image,
21742
0
        dst_image_layout: vk::ImageLayout,
21743
0
        p_image_subresources: *const vk::ImageSubresourceLayers,
21744
0
    ) {
21745
0
        let global = Self::instance();
21746
0
        // vkCmdCopyMemoryToImageIndirectNV
21747
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21748
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21749
0
        #[allow(clippy::unnecessary_cast)]
21750
0
        let layer_result = device_info
21751
0
            .customized_info
21752
0
            .borrow()
21753
0
            .hooks()
21754
0
            .cmd_copy_memory_to_image_indirect_nv(
21755
0
                command_buffer,
21756
0
                copy_buffer_address,
21757
0
                stride,
21758
0
                dst_image,
21759
0
                dst_image_layout,
21760
0
                unsafe { std::slice::from_raw_parts(p_image_subresources, copy_count as usize) },
21761
0
            );
21762
0
        match layer_result {
21763
0
            LayerResult::Handled(res) => res,
21764
            LayerResult::Unhandled => unsafe {
21765
0
                (dispatch_table.cmd_copy_memory_to_image_indirect_nv)(
21766
0
                    command_buffer,
21767
0
                    copy_buffer_address,
21768
0
                    copy_count,
21769
0
                    stride,
21770
0
                    dst_image,
21771
0
                    dst_image_layout,
21772
0
                    p_image_subresources,
21773
0
                )
21774
            },
21775
        }
21776
0
    }
21777
0
    extern "system" fn cmd_decompress_memory_nv(
21778
0
        command_buffer: vk::CommandBuffer,
21779
0
        decompress_region_count: u32,
21780
0
        p_decompress_memory_regions: *const vk::DecompressMemoryRegionNV,
21781
0
    ) {
21782
0
        let global = Self::instance();
21783
0
        // vkCmdDecompressMemoryNV
21784
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21785
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21786
0
        #[allow(clippy::unnecessary_cast)]
21787
0
        let layer_result = device_info
21788
0
            .customized_info
21789
0
            .borrow()
21790
0
            .hooks()
21791
0
            .cmd_decompress_memory_nv(command_buffer, unsafe {
21792
0
                std::slice::from_raw_parts(
21793
0
                    p_decompress_memory_regions,
21794
0
                    decompress_region_count as usize,
21795
0
                )
21796
0
            });
21797
0
        match layer_result {
21798
0
            LayerResult::Handled(res) => res,
21799
            LayerResult::Unhandled => unsafe {
21800
0
                (dispatch_table.cmd_decompress_memory_nv)(
21801
0
                    command_buffer,
21802
0
                    decompress_region_count,
21803
0
                    p_decompress_memory_regions,
21804
0
                )
21805
            },
21806
        }
21807
0
    }
21808
0
    extern "system" fn cmd_decompress_memory_indirect_count_nv(
21809
0
        command_buffer: vk::CommandBuffer,
21810
0
        indirect_commands_address: vk::DeviceAddress,
21811
0
        indirect_commands_count_address: vk::DeviceAddress,
21812
0
        stride: u32,
21813
0
    ) {
21814
0
        let global = Self::instance();
21815
0
        // vkCmdDecompressMemoryIndirectCountNV
21816
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21817
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21818
0
        let layer_result = device_info
21819
0
            .customized_info
21820
0
            .borrow()
21821
0
            .hooks()
21822
0
            .cmd_decompress_memory_indirect_count_nv(
21823
0
                command_buffer,
21824
0
                indirect_commands_address,
21825
0
                indirect_commands_count_address,
21826
0
                stride,
21827
0
            );
21828
0
        match layer_result {
21829
0
            LayerResult::Handled(res) => res,
21830
            LayerResult::Unhandled => unsafe {
21831
0
                (dispatch_table.cmd_decompress_memory_indirect_count_nv)(
21832
0
                    command_buffer,
21833
0
                    indirect_commands_address,
21834
0
                    indirect_commands_count_address,
21835
0
                    stride,
21836
0
                )
21837
            },
21838
        }
21839
0
    }
21840
0
    extern "system" fn cmd_set_tessellation_domain_origin_ext(
21841
0
        command_buffer: vk::CommandBuffer,
21842
0
        domain_origin: vk::TessellationDomainOrigin,
21843
0
    ) {
21844
0
        let global = Self::instance();
21845
0
        // vkCmdSetTessellationDomainOriginEXT
21846
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21847
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21848
0
        let layer_result = device_info
21849
0
            .customized_info
21850
0
            .borrow()
21851
0
            .hooks()
21852
0
            .cmd_set_tessellation_domain_origin_ext(command_buffer, domain_origin);
21853
0
        match layer_result {
21854
0
            LayerResult::Handled(res) => res,
21855
            LayerResult::Unhandled => unsafe {
21856
0
                (dispatch_table.cmd_set_tessellation_domain_origin_ext)(
21857
0
                    command_buffer,
21858
0
                    domain_origin,
21859
0
                )
21860
            },
21861
        }
21862
0
    }
21863
0
    extern "system" fn cmd_set_depth_clamp_enable_ext(
21864
0
        command_buffer: vk::CommandBuffer,
21865
0
        depth_clamp_enable: vk::Bool32,
21866
0
    ) {
21867
0
        let global = Self::instance();
21868
0
        // vkCmdSetDepthClampEnableEXT
21869
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21870
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21871
0
        let layer_result = device_info
21872
0
            .customized_info
21873
0
            .borrow()
21874
0
            .hooks()
21875
0
            .cmd_set_depth_clamp_enable_ext(command_buffer, depth_clamp_enable == vk::TRUE);
21876
0
        match layer_result {
21877
0
            LayerResult::Handled(res) => res,
21878
            LayerResult::Unhandled => unsafe {
21879
0
                (dispatch_table.cmd_set_depth_clamp_enable_ext)(command_buffer, depth_clamp_enable)
21880
            },
21881
        }
21882
0
    }
21883
0
    extern "system" fn cmd_set_polygon_mode_ext(
21884
0
        command_buffer: vk::CommandBuffer,
21885
0
        polygon_mode: vk::PolygonMode,
21886
0
    ) {
21887
0
        let global = Self::instance();
21888
0
        // vkCmdSetPolygonModeEXT
21889
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21890
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21891
0
        let layer_result = device_info
21892
0
            .customized_info
21893
0
            .borrow()
21894
0
            .hooks()
21895
0
            .cmd_set_polygon_mode_ext(command_buffer, polygon_mode);
21896
0
        match layer_result {
21897
0
            LayerResult::Handled(res) => res,
21898
            LayerResult::Unhandled => unsafe {
21899
0
                (dispatch_table.cmd_set_polygon_mode_ext)(command_buffer, polygon_mode)
21900
            },
21901
        }
21902
0
    }
21903
0
    extern "system" fn cmd_set_rasterization_samples_ext(
21904
0
        command_buffer: vk::CommandBuffer,
21905
0
        rasterization_samples: vk::SampleCountFlags,
21906
0
    ) {
21907
0
        let global = Self::instance();
21908
0
        // vkCmdSetRasterizationSamplesEXT
21909
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21910
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21911
0
        let layer_result = device_info
21912
0
            .customized_info
21913
0
            .borrow()
21914
0
            .hooks()
21915
0
            .cmd_set_rasterization_samples_ext(command_buffer, rasterization_samples);
21916
0
        match layer_result {
21917
0
            LayerResult::Handled(res) => res,
21918
            LayerResult::Unhandled => unsafe {
21919
0
                (dispatch_table.cmd_set_rasterization_samples_ext)(
21920
0
                    command_buffer,
21921
0
                    rasterization_samples,
21922
0
                )
21923
            },
21924
        }
21925
0
    }
21926
0
    extern "system" fn cmd_set_sample_mask_ext(
21927
0
        command_buffer: vk::CommandBuffer,
21928
0
        samples: vk::SampleCountFlags,
21929
0
        p_sample_mask: *const vk::SampleMask,
21930
0
    ) {
21931
0
        let global = Self::instance();
21932
0
        // vkCmdSetSampleMaskEXT
21933
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21934
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21935
0
        #[allow(clippy::unnecessary_cast)]
21936
0
        let layer_result = device_info
21937
0
            .customized_info
21938
0
            .borrow()
21939
0
            .hooks()
21940
0
            .cmd_set_sample_mask_ext(command_buffer, samples, unsafe {
21941
0
                std::slice::from_raw_parts(p_sample_mask, ((samples.as_raw() + 31) / 32) as usize)
21942
0
            });
21943
0
        match layer_result {
21944
0
            LayerResult::Handled(res) => res,
21945
            LayerResult::Unhandled => unsafe {
21946
0
                (dispatch_table.cmd_set_sample_mask_ext)(command_buffer, samples, p_sample_mask)
21947
            },
21948
        }
21949
0
    }
21950
0
    extern "system" fn cmd_set_alpha_to_coverage_enable_ext(
21951
0
        command_buffer: vk::CommandBuffer,
21952
0
        alpha_to_coverage_enable: vk::Bool32,
21953
0
    ) {
21954
0
        let global = Self::instance();
21955
0
        // vkCmdSetAlphaToCoverageEnableEXT
21956
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21957
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21958
0
        let layer_result = device_info
21959
0
            .customized_info
21960
0
            .borrow()
21961
0
            .hooks()
21962
0
            .cmd_set_alpha_to_coverage_enable_ext(
21963
0
                command_buffer,
21964
0
                alpha_to_coverage_enable == vk::TRUE,
21965
0
            );
21966
0
        match layer_result {
21967
0
            LayerResult::Handled(res) => res,
21968
            LayerResult::Unhandled => unsafe {
21969
0
                (dispatch_table.cmd_set_alpha_to_coverage_enable_ext)(
21970
0
                    command_buffer,
21971
0
                    alpha_to_coverage_enable,
21972
0
                )
21973
            },
21974
        }
21975
0
    }
21976
0
    extern "system" fn cmd_set_alpha_to_one_enable_ext(
21977
0
        command_buffer: vk::CommandBuffer,
21978
0
        alpha_to_one_enable: vk::Bool32,
21979
0
    ) {
21980
0
        let global = Self::instance();
21981
0
        // vkCmdSetAlphaToOneEnableEXT
21982
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21983
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21984
0
        let layer_result = device_info
21985
0
            .customized_info
21986
0
            .borrow()
21987
0
            .hooks()
21988
0
            .cmd_set_alpha_to_one_enable_ext(command_buffer, alpha_to_one_enable == vk::TRUE);
21989
0
        match layer_result {
21990
0
            LayerResult::Handled(res) => res,
21991
            LayerResult::Unhandled => unsafe {
21992
0
                (dispatch_table.cmd_set_alpha_to_one_enable_ext)(
21993
0
                    command_buffer,
21994
0
                    alpha_to_one_enable,
21995
0
                )
21996
            },
21997
        }
21998
0
    }
21999
0
    extern "system" fn cmd_set_logic_op_enable_ext(
22000
0
        command_buffer: vk::CommandBuffer,
22001
0
        logic_op_enable: vk::Bool32,
22002
0
    ) {
22003
0
        let global = Self::instance();
22004
0
        // vkCmdSetLogicOpEnableEXT
22005
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22006
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22007
0
        let layer_result = device_info
22008
0
            .customized_info
22009
0
            .borrow()
22010
0
            .hooks()
22011
0
            .cmd_set_logic_op_enable_ext(command_buffer, logic_op_enable == vk::TRUE);
22012
0
        match layer_result {
22013
0
            LayerResult::Handled(res) => res,
22014
            LayerResult::Unhandled => unsafe {
22015
0
                (dispatch_table.cmd_set_logic_op_enable_ext)(command_buffer, logic_op_enable)
22016
            },
22017
        }
22018
0
    }
22019
0
    extern "system" fn cmd_set_color_blend_enable_ext(
22020
0
        command_buffer: vk::CommandBuffer,
22021
0
        first_attachment: u32,
22022
0
        attachment_count: u32,
22023
0
        p_color_blend_enables: *const vk::Bool32,
22024
0
    ) {
22025
0
        let global = Self::instance();
22026
0
        // vkCmdSetColorBlendEnableEXT
22027
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22028
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22029
0
        #[allow(clippy::unnecessary_cast)]
22030
0
        let layer_result = device_info
22031
0
            .customized_info
22032
0
            .borrow()
22033
0
            .hooks()
22034
0
            .cmd_set_color_blend_enable_ext(
22035
0
                command_buffer,
22036
0
                first_attachment,
22037
0
                unsafe {
22038
0
                    std::slice::from_raw_parts(p_color_blend_enables, attachment_count as usize)
22039
0
                }
22040
0
                .iter()
22041
0
                .map(|v| *v == vk::TRUE),
22042
0
            );
22043
0
        match layer_result {
22044
0
            LayerResult::Handled(res) => res,
22045
            LayerResult::Unhandled => unsafe {
22046
0
                (dispatch_table.cmd_set_color_blend_enable_ext)(
22047
0
                    command_buffer,
22048
0
                    first_attachment,
22049
0
                    attachment_count,
22050
0
                    p_color_blend_enables,
22051
0
                )
22052
            },
22053
        }
22054
0
    }
22055
0
    extern "system" fn cmd_set_color_blend_equation_ext(
22056
0
        command_buffer: vk::CommandBuffer,
22057
0
        first_attachment: u32,
22058
0
        attachment_count: u32,
22059
0
        p_color_blend_equations: *const vk::ColorBlendEquationEXT,
22060
0
    ) {
22061
0
        let global = Self::instance();
22062
0
        // vkCmdSetColorBlendEquationEXT
22063
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22064
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22065
0
        #[allow(clippy::unnecessary_cast)]
22066
0
        let layer_result = device_info
22067
0
            .customized_info
22068
0
            .borrow()
22069
0
            .hooks()
22070
0
            .cmd_set_color_blend_equation_ext(command_buffer, first_attachment, unsafe {
22071
0
                std::slice::from_raw_parts(p_color_blend_equations, attachment_count as usize)
22072
0
            });
22073
0
        match layer_result {
22074
0
            LayerResult::Handled(res) => res,
22075
            LayerResult::Unhandled => unsafe {
22076
0
                (dispatch_table.cmd_set_color_blend_equation_ext)(
22077
0
                    command_buffer,
22078
0
                    first_attachment,
22079
0
                    attachment_count,
22080
0
                    p_color_blend_equations,
22081
0
                )
22082
            },
22083
        }
22084
0
    }
22085
0
    extern "system" fn cmd_set_color_write_mask_ext(
22086
0
        command_buffer: vk::CommandBuffer,
22087
0
        first_attachment: u32,
22088
0
        attachment_count: u32,
22089
0
        p_color_write_masks: *const vk::ColorComponentFlags,
22090
0
    ) {
22091
0
        let global = Self::instance();
22092
0
        // vkCmdSetColorWriteMaskEXT
22093
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22094
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22095
0
        #[allow(clippy::unnecessary_cast)]
22096
0
        let layer_result = device_info
22097
0
            .customized_info
22098
0
            .borrow()
22099
0
            .hooks()
22100
0
            .cmd_set_color_write_mask_ext(command_buffer, first_attachment, unsafe {
22101
0
                std::slice::from_raw_parts(p_color_write_masks, attachment_count as usize)
22102
0
            });
22103
0
        match layer_result {
22104
0
            LayerResult::Handled(res) => res,
22105
            LayerResult::Unhandled => unsafe {
22106
0
                (dispatch_table.cmd_set_color_write_mask_ext)(
22107
0
                    command_buffer,
22108
0
                    first_attachment,
22109
0
                    attachment_count,
22110
0
                    p_color_write_masks,
22111
0
                )
22112
            },
22113
        }
22114
0
    }
22115
0
    extern "system" fn cmd_set_rasterization_stream_ext(
22116
0
        command_buffer: vk::CommandBuffer,
22117
0
        rasterization_stream: u32,
22118
0
    ) {
22119
0
        let global = Self::instance();
22120
0
        // vkCmdSetRasterizationStreamEXT
22121
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22122
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22123
0
        let layer_result = device_info
22124
0
            .customized_info
22125
0
            .borrow()
22126
0
            .hooks()
22127
0
            .cmd_set_rasterization_stream_ext(command_buffer, rasterization_stream);
22128
0
        match layer_result {
22129
0
            LayerResult::Handled(res) => res,
22130
            LayerResult::Unhandled => unsafe {
22131
0
                (dispatch_table.cmd_set_rasterization_stream_ext)(
22132
0
                    command_buffer,
22133
0
                    rasterization_stream,
22134
0
                )
22135
            },
22136
        }
22137
0
    }
22138
0
    extern "system" fn cmd_set_conservative_rasterization_mode_ext(
22139
0
        command_buffer: vk::CommandBuffer,
22140
0
        conservative_rasterization_mode: vk::ConservativeRasterizationModeEXT,
22141
0
    ) {
22142
0
        let global = Self::instance();
22143
0
        // vkCmdSetConservativeRasterizationModeEXT
22144
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22145
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22146
0
        let layer_result = device_info
22147
0
            .customized_info
22148
0
            .borrow()
22149
0
            .hooks()
22150
0
            .cmd_set_conservative_rasterization_mode_ext(
22151
0
                command_buffer,
22152
0
                conservative_rasterization_mode,
22153
0
            );
22154
0
        match layer_result {
22155
0
            LayerResult::Handled(res) => res,
22156
            LayerResult::Unhandled => unsafe {
22157
0
                (dispatch_table.cmd_set_conservative_rasterization_mode_ext)(
22158
0
                    command_buffer,
22159
0
                    conservative_rasterization_mode,
22160
0
                )
22161
            },
22162
        }
22163
0
    }
22164
0
    extern "system" fn cmd_set_extra_primitive_overestimation_size_ext(
22165
0
        command_buffer: vk::CommandBuffer,
22166
0
        extra_primitive_overestimation_size: f32,
22167
0
    ) {
22168
0
        let global = Self::instance();
22169
0
        // vkCmdSetExtraPrimitiveOverestimationSizeEXT
22170
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22171
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22172
0
        let layer_result = device_info
22173
0
            .customized_info
22174
0
            .borrow()
22175
0
            .hooks()
22176
0
            .cmd_set_extra_primitive_overestimation_size_ext(
22177
0
                command_buffer,
22178
0
                extra_primitive_overestimation_size,
22179
0
            );
22180
0
        match layer_result {
22181
0
            LayerResult::Handled(res) => res,
22182
            LayerResult::Unhandled => unsafe {
22183
0
                (dispatch_table.cmd_set_extra_primitive_overestimation_size_ext)(
22184
0
                    command_buffer,
22185
0
                    extra_primitive_overestimation_size,
22186
0
                )
22187
            },
22188
        }
22189
0
    }
22190
0
    extern "system" fn cmd_set_depth_clip_enable_ext(
22191
0
        command_buffer: vk::CommandBuffer,
22192
0
        depth_clip_enable: vk::Bool32,
22193
0
    ) {
22194
0
        let global = Self::instance();
22195
0
        // vkCmdSetDepthClipEnableEXT
22196
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22197
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22198
0
        let layer_result = device_info
22199
0
            .customized_info
22200
0
            .borrow()
22201
0
            .hooks()
22202
0
            .cmd_set_depth_clip_enable_ext(command_buffer, depth_clip_enable == vk::TRUE);
22203
0
        match layer_result {
22204
0
            LayerResult::Handled(res) => res,
22205
            LayerResult::Unhandled => unsafe {
22206
0
                (dispatch_table.cmd_set_depth_clip_enable_ext)(command_buffer, depth_clip_enable)
22207
            },
22208
        }
22209
0
    }
22210
0
    extern "system" fn cmd_set_sample_locations_enable_ext(
22211
0
        command_buffer: vk::CommandBuffer,
22212
0
        sample_locations_enable: vk::Bool32,
22213
0
    ) {
22214
0
        let global = Self::instance();
22215
0
        // vkCmdSetSampleLocationsEnableEXT
22216
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22217
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22218
0
        let layer_result = device_info
22219
0
            .customized_info
22220
0
            .borrow()
22221
0
            .hooks()
22222
0
            .cmd_set_sample_locations_enable_ext(
22223
0
                command_buffer,
22224
0
                sample_locations_enable == vk::TRUE,
22225
0
            );
22226
0
        match layer_result {
22227
0
            LayerResult::Handled(res) => res,
22228
            LayerResult::Unhandled => unsafe {
22229
0
                (dispatch_table.cmd_set_sample_locations_enable_ext)(
22230
0
                    command_buffer,
22231
0
                    sample_locations_enable,
22232
0
                )
22233
            },
22234
        }
22235
0
    }
22236
0
    extern "system" fn cmd_set_color_blend_advanced_ext(
22237
0
        command_buffer: vk::CommandBuffer,
22238
0
        first_attachment: u32,
22239
0
        attachment_count: u32,
22240
0
        p_color_blend_advanced: *const vk::ColorBlendAdvancedEXT,
22241
0
    ) {
22242
0
        let global = Self::instance();
22243
0
        // vkCmdSetColorBlendAdvancedEXT
22244
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22245
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22246
0
        #[allow(clippy::unnecessary_cast)]
22247
0
        let layer_result = device_info
22248
0
            .customized_info
22249
0
            .borrow()
22250
0
            .hooks()
22251
0
            .cmd_set_color_blend_advanced_ext(command_buffer, first_attachment, unsafe {
22252
0
                std::slice::from_raw_parts(p_color_blend_advanced, attachment_count as usize)
22253
0
            });
22254
0
        match layer_result {
22255
0
            LayerResult::Handled(res) => res,
22256
            LayerResult::Unhandled => unsafe {
22257
0
                (dispatch_table.cmd_set_color_blend_advanced_ext)(
22258
0
                    command_buffer,
22259
0
                    first_attachment,
22260
0
                    attachment_count,
22261
0
                    p_color_blend_advanced,
22262
0
                )
22263
            },
22264
        }
22265
0
    }
22266
0
    extern "system" fn cmd_set_provoking_vertex_mode_ext(
22267
0
        command_buffer: vk::CommandBuffer,
22268
0
        provoking_vertex_mode: vk::ProvokingVertexModeEXT,
22269
0
    ) {
22270
0
        let global = Self::instance();
22271
0
        // vkCmdSetProvokingVertexModeEXT
22272
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22273
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22274
0
        let layer_result = device_info
22275
0
            .customized_info
22276
0
            .borrow()
22277
0
            .hooks()
22278
0
            .cmd_set_provoking_vertex_mode_ext(command_buffer, provoking_vertex_mode);
22279
0
        match layer_result {
22280
0
            LayerResult::Handled(res) => res,
22281
            LayerResult::Unhandled => unsafe {
22282
0
                (dispatch_table.cmd_set_provoking_vertex_mode_ext)(
22283
0
                    command_buffer,
22284
0
                    provoking_vertex_mode,
22285
0
                )
22286
            },
22287
        }
22288
0
    }
22289
0
    extern "system" fn cmd_set_line_rasterization_mode_ext(
22290
0
        command_buffer: vk::CommandBuffer,
22291
0
        line_rasterization_mode: vk::LineRasterizationModeEXT,
22292
0
    ) {
22293
0
        let global = Self::instance();
22294
0
        // vkCmdSetLineRasterizationModeEXT
22295
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22296
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22297
0
        let layer_result = device_info
22298
0
            .customized_info
22299
0
            .borrow()
22300
0
            .hooks()
22301
0
            .cmd_set_line_rasterization_mode_ext(command_buffer, line_rasterization_mode);
22302
0
        match layer_result {
22303
0
            LayerResult::Handled(res) => res,
22304
            LayerResult::Unhandled => unsafe {
22305
0
                (dispatch_table.cmd_set_line_rasterization_mode_ext)(
22306
0
                    command_buffer,
22307
0
                    line_rasterization_mode,
22308
0
                )
22309
            },
22310
        }
22311
0
    }
22312
0
    extern "system" fn cmd_set_line_stipple_enable_ext(
22313
0
        command_buffer: vk::CommandBuffer,
22314
0
        stippled_line_enable: vk::Bool32,
22315
0
    ) {
22316
0
        let global = Self::instance();
22317
0
        // vkCmdSetLineStippleEnableEXT
22318
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22319
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22320
0
        let layer_result = device_info
22321
0
            .customized_info
22322
0
            .borrow()
22323
0
            .hooks()
22324
0
            .cmd_set_line_stipple_enable_ext(command_buffer, stippled_line_enable == vk::TRUE);
22325
0
        match layer_result {
22326
0
            LayerResult::Handled(res) => res,
22327
            LayerResult::Unhandled => unsafe {
22328
0
                (dispatch_table.cmd_set_line_stipple_enable_ext)(
22329
0
                    command_buffer,
22330
0
                    stippled_line_enable,
22331
0
                )
22332
            },
22333
        }
22334
0
    }
22335
0
    extern "system" fn cmd_set_depth_clip_negative_one_to_one_ext(
22336
0
        command_buffer: vk::CommandBuffer,
22337
0
        negative_one_to_one: vk::Bool32,
22338
0
    ) {
22339
0
        let global = Self::instance();
22340
0
        // vkCmdSetDepthClipNegativeOneToOneEXT
22341
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22342
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22343
0
        let layer_result = device_info
22344
0
            .customized_info
22345
0
            .borrow()
22346
0
            .hooks()
22347
0
            .cmd_set_depth_clip_negative_one_to_one_ext(
22348
0
                command_buffer,
22349
0
                negative_one_to_one == vk::TRUE,
22350
0
            );
22351
0
        match layer_result {
22352
0
            LayerResult::Handled(res) => res,
22353
            LayerResult::Unhandled => unsafe {
22354
0
                (dispatch_table.cmd_set_depth_clip_negative_one_to_one_ext)(
22355
0
                    command_buffer,
22356
0
                    negative_one_to_one,
22357
0
                )
22358
            },
22359
        }
22360
0
    }
22361
0
    extern "system" fn cmd_set_viewport_w_scaling_enable_nv(
22362
0
        command_buffer: vk::CommandBuffer,
22363
0
        viewport_w_scaling_enable: vk::Bool32,
22364
0
    ) {
22365
0
        let global = Self::instance();
22366
0
        // vkCmdSetViewportWScalingEnableNV
22367
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22368
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22369
0
        let layer_result = device_info
22370
0
            .customized_info
22371
0
            .borrow()
22372
0
            .hooks()
22373
0
            .cmd_set_viewport_w_scaling_enable_nv(
22374
0
                command_buffer,
22375
0
                viewport_w_scaling_enable == vk::TRUE,
22376
0
            );
22377
0
        match layer_result {
22378
0
            LayerResult::Handled(res) => res,
22379
            LayerResult::Unhandled => unsafe {
22380
0
                (dispatch_table.cmd_set_viewport_w_scaling_enable_nv)(
22381
0
                    command_buffer,
22382
0
                    viewport_w_scaling_enable,
22383
0
                )
22384
            },
22385
        }
22386
0
    }
22387
0
    extern "system" fn cmd_set_viewport_swizzle_nv(
22388
0
        command_buffer: vk::CommandBuffer,
22389
0
        first_viewport: u32,
22390
0
        viewport_count: u32,
22391
0
        p_viewport_swizzles: *const vk::ViewportSwizzleNV,
22392
0
    ) {
22393
0
        let global = Self::instance();
22394
0
        // vkCmdSetViewportSwizzleNV
22395
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22396
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22397
0
        #[allow(clippy::unnecessary_cast)]
22398
0
        let layer_result = device_info
22399
0
            .customized_info
22400
0
            .borrow()
22401
0
            .hooks()
22402
0
            .cmd_set_viewport_swizzle_nv(command_buffer, first_viewport, unsafe {
22403
0
                std::slice::from_raw_parts(p_viewport_swizzles, viewport_count as usize)
22404
0
            });
22405
0
        match layer_result {
22406
0
            LayerResult::Handled(res) => res,
22407
            LayerResult::Unhandled => unsafe {
22408
0
                (dispatch_table.cmd_set_viewport_swizzle_nv)(
22409
0
                    command_buffer,
22410
0
                    first_viewport,
22411
0
                    viewport_count,
22412
0
                    p_viewport_swizzles,
22413
0
                )
22414
            },
22415
        }
22416
0
    }
22417
0
    extern "system" fn cmd_set_coverage_to_color_enable_nv(
22418
0
        command_buffer: vk::CommandBuffer,
22419
0
        coverage_to_color_enable: vk::Bool32,
22420
0
    ) {
22421
0
        let global = Self::instance();
22422
0
        // vkCmdSetCoverageToColorEnableNV
22423
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22424
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22425
0
        let layer_result = device_info
22426
0
            .customized_info
22427
0
            .borrow()
22428
0
            .hooks()
22429
0
            .cmd_set_coverage_to_color_enable_nv(
22430
0
                command_buffer,
22431
0
                coverage_to_color_enable == vk::TRUE,
22432
0
            );
22433
0
        match layer_result {
22434
0
            LayerResult::Handled(res) => res,
22435
            LayerResult::Unhandled => unsafe {
22436
0
                (dispatch_table.cmd_set_coverage_to_color_enable_nv)(
22437
0
                    command_buffer,
22438
0
                    coverage_to_color_enable,
22439
0
                )
22440
            },
22441
        }
22442
0
    }
22443
0
    extern "system" fn cmd_set_coverage_to_color_location_nv(
22444
0
        command_buffer: vk::CommandBuffer,
22445
0
        coverage_to_color_location: u32,
22446
0
    ) {
22447
0
        let global = Self::instance();
22448
0
        // vkCmdSetCoverageToColorLocationNV
22449
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22450
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22451
0
        let layer_result = device_info
22452
0
            .customized_info
22453
0
            .borrow()
22454
0
            .hooks()
22455
0
            .cmd_set_coverage_to_color_location_nv(command_buffer, coverage_to_color_location);
22456
0
        match layer_result {
22457
0
            LayerResult::Handled(res) => res,
22458
            LayerResult::Unhandled => unsafe {
22459
0
                (dispatch_table.cmd_set_coverage_to_color_location_nv)(
22460
0
                    command_buffer,
22461
0
                    coverage_to_color_location,
22462
0
                )
22463
            },
22464
        }
22465
0
    }
22466
0
    extern "system" fn cmd_set_coverage_modulation_mode_nv(
22467
0
        command_buffer: vk::CommandBuffer,
22468
0
        coverage_modulation_mode: vk::CoverageModulationModeNV,
22469
0
    ) {
22470
0
        let global = Self::instance();
22471
0
        // vkCmdSetCoverageModulationModeNV
22472
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22473
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22474
0
        let layer_result = device_info
22475
0
            .customized_info
22476
0
            .borrow()
22477
0
            .hooks()
22478
0
            .cmd_set_coverage_modulation_mode_nv(command_buffer, coverage_modulation_mode);
22479
0
        match layer_result {
22480
0
            LayerResult::Handled(res) => res,
22481
            LayerResult::Unhandled => unsafe {
22482
0
                (dispatch_table.cmd_set_coverage_modulation_mode_nv)(
22483
0
                    command_buffer,
22484
0
                    coverage_modulation_mode,
22485
0
                )
22486
            },
22487
        }
22488
0
    }
22489
0
    extern "system" fn cmd_set_coverage_modulation_table_enable_nv(
22490
0
        command_buffer: vk::CommandBuffer,
22491
0
        coverage_modulation_table_enable: vk::Bool32,
22492
0
    ) {
22493
0
        let global = Self::instance();
22494
0
        // vkCmdSetCoverageModulationTableEnableNV
22495
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22496
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22497
0
        let layer_result = device_info
22498
0
            .customized_info
22499
0
            .borrow()
22500
0
            .hooks()
22501
0
            .cmd_set_coverage_modulation_table_enable_nv(
22502
0
                command_buffer,
22503
0
                coverage_modulation_table_enable == vk::TRUE,
22504
0
            );
22505
0
        match layer_result {
22506
0
            LayerResult::Handled(res) => res,
22507
            LayerResult::Unhandled => unsafe {
22508
0
                (dispatch_table.cmd_set_coverage_modulation_table_enable_nv)(
22509
0
                    command_buffer,
22510
0
                    coverage_modulation_table_enable,
22511
0
                )
22512
            },
22513
        }
22514
0
    }
22515
0
    extern "system" fn cmd_set_coverage_modulation_table_nv(
22516
0
        command_buffer: vk::CommandBuffer,
22517
0
        coverage_modulation_table_count: u32,
22518
0
        p_coverage_modulation_table: *const f32,
22519
0
    ) {
22520
0
        let global = Self::instance();
22521
0
        // vkCmdSetCoverageModulationTableNV
22522
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22523
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22524
0
        #[allow(clippy::unnecessary_cast)]
22525
0
        let layer_result = device_info
22526
0
            .customized_info
22527
0
            .borrow()
22528
0
            .hooks()
22529
0
            .cmd_set_coverage_modulation_table_nv(command_buffer, unsafe {
22530
0
                std::slice::from_raw_parts(
22531
0
                    p_coverage_modulation_table,
22532
0
                    coverage_modulation_table_count as usize,
22533
0
                )
22534
0
            });
22535
0
        match layer_result {
22536
0
            LayerResult::Handled(res) => res,
22537
            LayerResult::Unhandled => unsafe {
22538
0
                (dispatch_table.cmd_set_coverage_modulation_table_nv)(
22539
0
                    command_buffer,
22540
0
                    coverage_modulation_table_count,
22541
0
                    p_coverage_modulation_table,
22542
0
                )
22543
            },
22544
        }
22545
0
    }
22546
0
    extern "system" fn cmd_set_shading_rate_image_enable_nv(
22547
0
        command_buffer: vk::CommandBuffer,
22548
0
        shading_rate_image_enable: vk::Bool32,
22549
0
    ) {
22550
0
        let global = Self::instance();
22551
0
        // vkCmdSetShadingRateImageEnableNV
22552
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22553
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22554
0
        let layer_result = device_info
22555
0
            .customized_info
22556
0
            .borrow()
22557
0
            .hooks()
22558
0
            .cmd_set_shading_rate_image_enable_nv(
22559
0
                command_buffer,
22560
0
                shading_rate_image_enable == vk::TRUE,
22561
0
            );
22562
0
        match layer_result {
22563
0
            LayerResult::Handled(res) => res,
22564
            LayerResult::Unhandled => unsafe {
22565
0
                (dispatch_table.cmd_set_shading_rate_image_enable_nv)(
22566
0
                    command_buffer,
22567
0
                    shading_rate_image_enable,
22568
0
                )
22569
            },
22570
        }
22571
0
    }
22572
0
    extern "system" fn cmd_set_representative_fragment_test_enable_nv(
22573
0
        command_buffer: vk::CommandBuffer,
22574
0
        representative_fragment_test_enable: vk::Bool32,
22575
0
    ) {
22576
0
        let global = Self::instance();
22577
0
        // vkCmdSetRepresentativeFragmentTestEnableNV
22578
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22579
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22580
0
        let layer_result = device_info
22581
0
            .customized_info
22582
0
            .borrow()
22583
0
            .hooks()
22584
0
            .cmd_set_representative_fragment_test_enable_nv(
22585
0
                command_buffer,
22586
0
                representative_fragment_test_enable == vk::TRUE,
22587
0
            );
22588
0
        match layer_result {
22589
0
            LayerResult::Handled(res) => res,
22590
            LayerResult::Unhandled => unsafe {
22591
0
                (dispatch_table.cmd_set_representative_fragment_test_enable_nv)(
22592
0
                    command_buffer,
22593
0
                    representative_fragment_test_enable,
22594
0
                )
22595
            },
22596
        }
22597
0
    }
22598
0
    extern "system" fn cmd_set_coverage_reduction_mode_nv(
22599
0
        command_buffer: vk::CommandBuffer,
22600
0
        coverage_reduction_mode: vk::CoverageReductionModeNV,
22601
0
    ) {
22602
0
        let global = Self::instance();
22603
0
        // vkCmdSetCoverageReductionModeNV
22604
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22605
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22606
0
        let layer_result = device_info
22607
0
            .customized_info
22608
0
            .borrow()
22609
0
            .hooks()
22610
0
            .cmd_set_coverage_reduction_mode_nv(command_buffer, coverage_reduction_mode);
22611
0
        match layer_result {
22612
0
            LayerResult::Handled(res) => res,
22613
            LayerResult::Unhandled => unsafe {
22614
0
                (dispatch_table.cmd_set_coverage_reduction_mode_nv)(
22615
0
                    command_buffer,
22616
0
                    coverage_reduction_mode,
22617
0
                )
22618
            },
22619
        }
22620
0
    }
22621
0
    extern "system" fn get_shader_module_identifier_ext(
22622
0
        device: vk::Device,
22623
0
        shader_module: vk::ShaderModule,
22624
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22625
0
    ) {
22626
0
        let global = Self::instance();
22627
0
        // vkGetShaderModuleIdentifierEXT
22628
0
        let device_info = global.get_device_info(device).unwrap();
22629
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22630
0
        let layer_result = device_info
22631
0
            .customized_info
22632
0
            .borrow()
22633
0
            .hooks()
22634
0
            .get_shader_module_identifier_ext(
22635
0
                shader_module,
22636
0
                unsafe { p_identifier.as_mut() }.unwrap(),
22637
0
            );
22638
0
        match layer_result {
22639
0
            LayerResult::Handled(res) => res,
22640
            LayerResult::Unhandled => unsafe {
22641
0
                (dispatch_table.get_shader_module_identifier_ext)(
22642
0
                    device,
22643
0
                    shader_module,
22644
0
                    p_identifier,
22645
0
                )
22646
            },
22647
        }
22648
0
    }
22649
0
    extern "system" fn get_shader_module_create_info_identifier_ext(
22650
0
        device: vk::Device,
22651
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
22652
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22653
0
    ) {
22654
0
        let global = Self::instance();
22655
0
        // vkGetShaderModuleCreateInfoIdentifierEXT
22656
0
        let device_info = global.get_device_info(device).unwrap();
22657
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22658
0
        let layer_result = device_info
22659
0
            .customized_info
22660
0
            .borrow()
22661
0
            .hooks()
22662
0
            .get_shader_module_create_info_identifier_ext(
22663
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22664
0
                unsafe { p_identifier.as_mut() }.unwrap(),
22665
0
            );
22666
0
        match layer_result {
22667
0
            LayerResult::Handled(res) => res,
22668
            LayerResult::Unhandled => unsafe {
22669
0
                (dispatch_table.get_shader_module_create_info_identifier_ext)(
22670
0
                    device,
22671
0
                    p_create_info,
22672
0
                    p_identifier,
22673
0
                )
22674
            },
22675
        }
22676
0
    }
22677
0
    extern "system" fn create_optical_flow_session_nv(
22678
0
        device: vk::Device,
22679
0
        p_create_info: *const vk::OpticalFlowSessionCreateInfoNV,
22680
0
        p_allocator: *const vk::AllocationCallbacks,
22681
0
        p_session: *mut vk::OpticalFlowSessionNV,
22682
0
    ) -> vk::Result {
22683
0
        let global = Self::instance();
22684
0
        // vkCreateOpticalFlowSessionNV
22685
0
        let device_info = global.get_device_info(device).unwrap();
22686
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22687
0
        let layer_result = device_info
22688
0
            .customized_info
22689
0
            .borrow()
22690
0
            .hooks()
22691
0
            .create_optical_flow_session_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
22692
0
                p_allocator.as_ref()
22693
0
            });
22694
0
        match layer_result {
22695
0
            LayerResult::Handled(res) => match res {
22696
0
                Ok(res) => {
22697
0
                    *unsafe { p_session.as_mut() }.unwrap() = res;
22698
0
                    vk::Result::SUCCESS
22699
                }
22700
0
                Err(e) => e,
22701
            },
22702
            LayerResult::Unhandled => unsafe {
22703
0
                (dispatch_table.create_optical_flow_session_nv)(
22704
0
                    device,
22705
0
                    p_create_info,
22706
0
                    p_allocator,
22707
0
                    p_session,
22708
0
                )
22709
            },
22710
        }
22711
0
    }
22712
0
    extern "system" fn destroy_optical_flow_session_nv(
22713
0
        device: vk::Device,
22714
0
        session: vk::OpticalFlowSessionNV,
22715
0
        p_allocator: *const vk::AllocationCallbacks,
22716
0
    ) {
22717
0
        let global = Self::instance();
22718
0
        // vkDestroyOpticalFlowSessionNV
22719
0
        let device_info = global.get_device_info(device).unwrap();
22720
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22721
0
        let layer_result = device_info
22722
0
            .customized_info
22723
0
            .borrow()
22724
0
            .hooks()
22725
0
            .destroy_optical_flow_session_nv(session, unsafe { p_allocator.as_ref() });
22726
0
        match layer_result {
22727
0
            LayerResult::Handled(res) => res,
22728
            LayerResult::Unhandled => unsafe {
22729
0
                (dispatch_table.destroy_optical_flow_session_nv)(device, session, p_allocator)
22730
            },
22731
        }
22732
0
    }
22733
0
    extern "system" fn bind_optical_flow_session_image_nv(
22734
0
        device: vk::Device,
22735
0
        session: vk::OpticalFlowSessionNV,
22736
0
        binding_point: vk::OpticalFlowSessionBindingPointNV,
22737
0
        view: vk::ImageView,
22738
0
        layout: vk::ImageLayout,
22739
0
    ) -> vk::Result {
22740
0
        let global = Self::instance();
22741
0
        // vkBindOpticalFlowSessionImageNV
22742
0
        let device_info = global.get_device_info(device).unwrap();
22743
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22744
0
        let layer_result = device_info
22745
0
            .customized_info
22746
0
            .borrow()
22747
0
            .hooks()
22748
0
            .bind_optical_flow_session_image_nv(session, binding_point, view, layout);
22749
0
        match layer_result {
22750
0
            LayerResult::Handled(res) => match res {
22751
0
                Ok(()) => vk::Result::SUCCESS,
22752
0
                Err(e) => e,
22753
            },
22754
            LayerResult::Unhandled => unsafe {
22755
0
                (dispatch_table.bind_optical_flow_session_image_nv)(
22756
0
                    device,
22757
0
                    session,
22758
0
                    binding_point,
22759
0
                    view,
22760
0
                    layout,
22761
0
                )
22762
            },
22763
        }
22764
0
    }
22765
0
    extern "system" fn cmd_optical_flow_execute_nv(
22766
0
        command_buffer: vk::CommandBuffer,
22767
0
        session: vk::OpticalFlowSessionNV,
22768
0
        p_execute_info: *const vk::OpticalFlowExecuteInfoNV,
22769
0
    ) {
22770
0
        let global = Self::instance();
22771
0
        // vkCmdOpticalFlowExecuteNV
22772
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22773
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22774
0
        let layer_result = device_info
22775
0
            .customized_info
22776
0
            .borrow()
22777
0
            .hooks()
22778
0
            .cmd_optical_flow_execute_nv(
22779
0
                command_buffer,
22780
0
                session,
22781
0
                unsafe { p_execute_info.as_ref() }.unwrap(),
22782
0
            );
22783
0
        match layer_result {
22784
0
            LayerResult::Handled(res) => res,
22785
            LayerResult::Unhandled => unsafe {
22786
0
                (dispatch_table.cmd_optical_flow_execute_nv)(
22787
0
                    command_buffer,
22788
0
                    session,
22789
0
                    p_execute_info,
22790
0
                )
22791
            },
22792
        }
22793
0
    }
22794
0
    extern "system" fn get_framebuffer_tile_properties_qcom(
22795
0
        device: vk::Device,
22796
0
        framebuffer: vk::Framebuffer,
22797
0
        p_properties_count: *mut u32,
22798
0
        p_properties: *mut vk::TilePropertiesQCOM,
22799
0
    ) -> vk::Result {
22800
0
        let global = Self::instance();
22801
0
        // vkGetFramebufferTilePropertiesQCOM
22802
0
        let device_info = global.get_device_info(device).unwrap();
22803
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22804
        #[allow(clippy::unnecessary_cast)]
22805
0
        let layer_result = device_info
22806
0
            .customized_info
22807
0
            .borrow()
22808
0
            .hooks()
22809
0
            .get_framebuffer_tile_properties_qcom(
22810
0
                framebuffer,
22811
0
                if p_properties.is_null() {
22812
0
                    None
22813
                } else {
22814
0
                    Some(unsafe {
22815
0
                        std::slice::from_raw_parts_mut(
22816
0
                            p_properties,
22817
0
                            *unsafe { p_properties_count.as_ref() }.unwrap() as usize,
22818
0
                        )
22819
0
                    })
22820
                },
22821
            );
22822
0
        match layer_result {
22823
0
            LayerResult::Handled(res) => match res {
22824
0
                Ok(()) => vk::Result::SUCCESS,
22825
0
                Err(e) => e,
22826
            },
22827
            LayerResult::Unhandled => unsafe {
22828
0
                (dispatch_table.get_framebuffer_tile_properties_qcom)(
22829
0
                    device,
22830
0
                    framebuffer,
22831
0
                    p_properties_count,
22832
0
                    p_properties,
22833
0
                )
22834
            },
22835
        }
22836
0
    }
22837
0
    extern "system" fn get_dynamic_rendering_tile_properties_qcom(
22838
0
        device: vk::Device,
22839
0
        p_rendering_info: *const vk::RenderingInfo,
22840
0
        p_properties: *mut vk::TilePropertiesQCOM,
22841
0
    ) -> vk::Result {
22842
0
        let global = Self::instance();
22843
0
        // vkGetDynamicRenderingTilePropertiesQCOM
22844
0
        let device_info = global.get_device_info(device).unwrap();
22845
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22846
0
        let layer_result = device_info
22847
0
            .customized_info
22848
0
            .borrow()
22849
0
            .hooks()
22850
0
            .get_dynamic_rendering_tile_properties_qcom(
22851
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
22852
0
                unsafe { p_properties.as_mut() }.unwrap(),
22853
0
            );
22854
0
        match layer_result {
22855
0
            LayerResult::Handled(res) => match res {
22856
0
                Ok(()) => vk::Result::SUCCESS,
22857
0
                Err(e) => e,
22858
            },
22859
            LayerResult::Unhandled => unsafe {
22860
0
                (dispatch_table.get_dynamic_rendering_tile_properties_qcom)(
22861
0
                    device,
22862
0
                    p_rendering_info,
22863
0
                    p_properties,
22864
0
                )
22865
            },
22866
        }
22867
0
    }
22868
0
    extern "system" fn create_acceleration_structure_khr(
22869
0
        device: vk::Device,
22870
0
        p_create_info: *const vk::AccelerationStructureCreateInfoKHR,
22871
0
        p_allocator: *const vk::AllocationCallbacks,
22872
0
        p_acceleration_structure: *mut vk::AccelerationStructureKHR,
22873
0
    ) -> vk::Result {
22874
0
        let global = Self::instance();
22875
0
        // vkCreateAccelerationStructureKHR
22876
0
        let device_info = global.get_device_info(device).unwrap();
22877
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22878
0
        let layer_result = device_info
22879
0
            .customized_info
22880
0
            .borrow()
22881
0
            .hooks()
22882
0
            .create_acceleration_structure_khr(
22883
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22884
0
                unsafe { p_allocator.as_ref() },
22885
0
            );
22886
0
        match layer_result {
22887
0
            LayerResult::Handled(res) => match res {
22888
0
                Ok(res) => {
22889
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
22890
0
                    vk::Result::SUCCESS
22891
                }
22892
0
                Err(e) => e,
22893
            },
22894
            LayerResult::Unhandled => unsafe {
22895
0
                (dispatch_table.create_acceleration_structure_khr)(
22896
0
                    device,
22897
0
                    p_create_info,
22898
0
                    p_allocator,
22899
0
                    p_acceleration_structure,
22900
0
                )
22901
            },
22902
        }
22903
0
    }
22904
0
    extern "system" fn destroy_acceleration_structure_khr(
22905
0
        device: vk::Device,
22906
0
        acceleration_structure: vk::AccelerationStructureKHR,
22907
0
        p_allocator: *const vk::AllocationCallbacks,
22908
0
    ) {
22909
0
        let global = Self::instance();
22910
0
        // vkDestroyAccelerationStructureKHR
22911
0
        let device_info = global.get_device_info(device).unwrap();
22912
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22913
0
        let layer_result = device_info
22914
0
            .customized_info
22915
0
            .borrow()
22916
0
            .hooks()
22917
0
            .destroy_acceleration_structure_khr(acceleration_structure, unsafe {
22918
0
                p_allocator.as_ref()
22919
0
            });
22920
0
        match layer_result {
22921
0
            LayerResult::Handled(res) => res,
22922
            LayerResult::Unhandled => unsafe {
22923
0
                (dispatch_table.destroy_acceleration_structure_khr)(
22924
0
                    device,
22925
0
                    acceleration_structure,
22926
0
                    p_allocator,
22927
0
                )
22928
            },
22929
        }
22930
0
    }
22931
0
    extern "system" fn copy_acceleration_structure_khr(
22932
0
        device: vk::Device,
22933
0
        deferred_operation: vk::DeferredOperationKHR,
22934
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
22935
0
    ) -> vk::Result {
22936
0
        let global = Self::instance();
22937
0
        // vkCopyAccelerationStructureKHR
22938
0
        let device_info = global.get_device_info(device).unwrap();
22939
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22940
0
        let layer_result = device_info
22941
0
            .customized_info
22942
0
            .borrow()
22943
0
            .hooks()
22944
0
            .copy_acceleration_structure_khr(
22945
0
                deferred_operation,
22946
0
                unsafe { p_info.as_ref() }.unwrap(),
22947
0
            );
22948
0
        match layer_result {
22949
0
            LayerResult::Handled(res) => match res {
22950
0
                Ok(()) => vk::Result::SUCCESS,
22951
0
                Err(e) => e,
22952
            },
22953
            LayerResult::Unhandled => unsafe {
22954
0
                (dispatch_table.copy_acceleration_structure_khr)(device, deferred_operation, p_info)
22955
            },
22956
        }
22957
0
    }
22958
0
    extern "system" fn copy_acceleration_structure_to_memory_khr(
22959
0
        device: vk::Device,
22960
0
        deferred_operation: vk::DeferredOperationKHR,
22961
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
22962
0
    ) -> vk::Result {
22963
0
        let global = Self::instance();
22964
0
        // vkCopyAccelerationStructureToMemoryKHR
22965
0
        let device_info = global.get_device_info(device).unwrap();
22966
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22967
0
        let layer_result = device_info
22968
0
            .customized_info
22969
0
            .borrow()
22970
0
            .hooks()
22971
0
            .copy_acceleration_structure_to_memory_khr(
22972
0
                deferred_operation,
22973
0
                unsafe { p_info.as_ref() }.unwrap(),
22974
0
            );
22975
0
        match layer_result {
22976
0
            LayerResult::Handled(res) => match res {
22977
0
                Ok(()) => vk::Result::SUCCESS,
22978
0
                Err(e) => e,
22979
            },
22980
            LayerResult::Unhandled => unsafe {
22981
0
                (dispatch_table.copy_acceleration_structure_to_memory_khr)(
22982
0
                    device,
22983
0
                    deferred_operation,
22984
0
                    p_info,
22985
0
                )
22986
            },
22987
        }
22988
0
    }
22989
0
    extern "system" fn copy_memory_to_acceleration_structure_khr(
22990
0
        device: vk::Device,
22991
0
        deferred_operation: vk::DeferredOperationKHR,
22992
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
22993
0
    ) -> vk::Result {
22994
0
        let global = Self::instance();
22995
0
        // vkCopyMemoryToAccelerationStructureKHR
22996
0
        let device_info = global.get_device_info(device).unwrap();
22997
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22998
0
        let layer_result = device_info
22999
0
            .customized_info
23000
0
            .borrow()
23001
0
            .hooks()
23002
0
            .copy_memory_to_acceleration_structure_khr(
23003
0
                deferred_operation,
23004
0
                unsafe { p_info.as_ref() }.unwrap(),
23005
0
            );
23006
0
        match layer_result {
23007
0
            LayerResult::Handled(res) => match res {
23008
0
                Ok(()) => vk::Result::SUCCESS,
23009
0
                Err(e) => e,
23010
            },
23011
            LayerResult::Unhandled => unsafe {
23012
0
                (dispatch_table.copy_memory_to_acceleration_structure_khr)(
23013
0
                    device,
23014
0
                    deferred_operation,
23015
0
                    p_info,
23016
0
                )
23017
            },
23018
        }
23019
0
    }
23020
0
    extern "system" fn write_acceleration_structures_properties_khr(
23021
0
        device: vk::Device,
23022
0
        acceleration_structure_count: u32,
23023
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
23024
0
        query_type: vk::QueryType,
23025
0
        data_size: usize,
23026
0
        p_data: *mut c_void,
23027
0
        stride: usize,
23028
0
    ) -> vk::Result {
23029
0
        let global = Self::instance();
23030
0
        // vkWriteAccelerationStructuresPropertiesKHR
23031
0
        let device_info = global.get_device_info(device).unwrap();
23032
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23033
0
        #[allow(clippy::unnecessary_cast)]
23034
0
        #[allow(clippy::unnecessary_cast)]
23035
0
        let layer_result = device_info
23036
0
            .customized_info
23037
0
            .borrow()
23038
0
            .hooks()
23039
0
            .write_acceleration_structures_properties_khr(
23040
0
                unsafe {
23041
0
                    std::slice::from_raw_parts(
23042
0
                        p_acceleration_structures,
23043
0
                        acceleration_structure_count as usize,
23044
0
                    )
23045
0
                },
23046
0
                query_type,
23047
0
                unsafe { std::slice::from_raw_parts_mut(p_data as *mut u8, data_size as usize) },
23048
0
                stride,
23049
0
            );
23050
0
        match layer_result {
23051
0
            LayerResult::Handled(res) => match res {
23052
0
                Ok(()) => vk::Result::SUCCESS,
23053
0
                Err(e) => e,
23054
            },
23055
            LayerResult::Unhandled => unsafe {
23056
0
                (dispatch_table.write_acceleration_structures_properties_khr)(
23057
0
                    device,
23058
0
                    acceleration_structure_count,
23059
0
                    p_acceleration_structures,
23060
0
                    query_type,
23061
0
                    data_size,
23062
0
                    p_data,
23063
0
                    stride,
23064
0
                )
23065
            },
23066
        }
23067
0
    }
23068
0
    extern "system" fn cmd_copy_acceleration_structure_khr(
23069
0
        command_buffer: vk::CommandBuffer,
23070
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
23071
0
    ) {
23072
0
        let global = Self::instance();
23073
0
        // vkCmdCopyAccelerationStructureKHR
23074
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23075
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23076
0
        let layer_result = device_info
23077
0
            .customized_info
23078
0
            .borrow()
23079
0
            .hooks()
23080
0
            .cmd_copy_acceleration_structure_khr(
23081
0
                command_buffer,
23082
0
                unsafe { p_info.as_ref() }.unwrap(),
23083
0
            );
23084
0
        match layer_result {
23085
0
            LayerResult::Handled(res) => res,
23086
            LayerResult::Unhandled => unsafe {
23087
0
                (dispatch_table.cmd_copy_acceleration_structure_khr)(command_buffer, p_info)
23088
            },
23089
        }
23090
0
    }
23091
0
    extern "system" fn cmd_copy_acceleration_structure_to_memory_khr(
23092
0
        command_buffer: vk::CommandBuffer,
23093
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
23094
0
    ) {
23095
0
        let global = Self::instance();
23096
0
        // vkCmdCopyAccelerationStructureToMemoryKHR
23097
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23098
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23099
0
        let layer_result = device_info
23100
0
            .customized_info
23101
0
            .borrow()
23102
0
            .hooks()
23103
0
            .cmd_copy_acceleration_structure_to_memory_khr(
23104
0
                command_buffer,
23105
0
                unsafe { p_info.as_ref() }.unwrap(),
23106
0
            );
23107
0
        match layer_result {
23108
0
            LayerResult::Handled(res) => res,
23109
            LayerResult::Unhandled => unsafe {
23110
0
                (dispatch_table.cmd_copy_acceleration_structure_to_memory_khr)(
23111
0
                    command_buffer,
23112
0
                    p_info,
23113
0
                )
23114
            },
23115
        }
23116
0
    }
23117
0
    extern "system" fn cmd_copy_memory_to_acceleration_structure_khr(
23118
0
        command_buffer: vk::CommandBuffer,
23119
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
23120
0
    ) {
23121
0
        let global = Self::instance();
23122
0
        // vkCmdCopyMemoryToAccelerationStructureKHR
23123
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23124
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23125
0
        let layer_result = device_info
23126
0
            .customized_info
23127
0
            .borrow()
23128
0
            .hooks()
23129
0
            .cmd_copy_memory_to_acceleration_structure_khr(
23130
0
                command_buffer,
23131
0
                unsafe { p_info.as_ref() }.unwrap(),
23132
0
            );
23133
0
        match layer_result {
23134
0
            LayerResult::Handled(res) => res,
23135
            LayerResult::Unhandled => unsafe {
23136
0
                (dispatch_table.cmd_copy_memory_to_acceleration_structure_khr)(
23137
0
                    command_buffer,
23138
0
                    p_info,
23139
0
                )
23140
            },
23141
        }
23142
0
    }
23143
0
    extern "system" fn get_acceleration_structure_device_address_khr(
23144
0
        device: vk::Device,
23145
0
        p_info: *const vk::AccelerationStructureDeviceAddressInfoKHR,
23146
0
    ) -> vk::DeviceAddress {
23147
0
        let global = Self::instance();
23148
0
        // vkGetAccelerationStructureDeviceAddressKHR
23149
0
        let device_info = global.get_device_info(device).unwrap();
23150
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23151
0
        let layer_result = device_info
23152
0
            .customized_info
23153
0
            .borrow()
23154
0
            .hooks()
23155
0
            .get_acceleration_structure_device_address_khr(unsafe { p_info.as_ref() }.unwrap());
23156
0
        match layer_result {
23157
0
            LayerResult::Handled(res) => res,
23158
            LayerResult::Unhandled => unsafe {
23159
0
                (dispatch_table.get_acceleration_structure_device_address_khr)(device, p_info)
23160
            },
23161
        }
23162
0
    }
23163
0
    extern "system" fn cmd_write_acceleration_structures_properties_khr(
23164
0
        command_buffer: vk::CommandBuffer,
23165
0
        acceleration_structure_count: u32,
23166
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
23167
0
        query_type: vk::QueryType,
23168
0
        query_pool: vk::QueryPool,
23169
0
        first_query: u32,
23170
0
    ) {
23171
0
        let global = Self::instance();
23172
0
        // vkCmdWriteAccelerationStructuresPropertiesKHR
23173
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23174
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23175
0
        #[allow(clippy::unnecessary_cast)]
23176
0
        let layer_result = device_info
23177
0
            .customized_info
23178
0
            .borrow()
23179
0
            .hooks()
23180
0
            .cmd_write_acceleration_structures_properties_khr(
23181
0
                command_buffer,
23182
0
                unsafe {
23183
0
                    std::slice::from_raw_parts(
23184
0
                        p_acceleration_structures,
23185
0
                        acceleration_structure_count as usize,
23186
0
                    )
23187
0
                },
23188
0
                query_type,
23189
0
                query_pool,
23190
0
                first_query,
23191
0
            );
23192
0
        match layer_result {
23193
0
            LayerResult::Handled(res) => res,
23194
            LayerResult::Unhandled => unsafe {
23195
0
                (dispatch_table.cmd_write_acceleration_structures_properties_khr)(
23196
0
                    command_buffer,
23197
0
                    acceleration_structure_count,
23198
0
                    p_acceleration_structures,
23199
0
                    query_type,
23200
0
                    query_pool,
23201
0
                    first_query,
23202
0
                )
23203
            },
23204
        }
23205
0
    }
23206
0
    extern "system" fn get_device_acceleration_structure_compatibility_khr(
23207
0
        device: vk::Device,
23208
0
        p_version_info: *const vk::AccelerationStructureVersionInfoKHR,
23209
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
23210
0
    ) {
23211
0
        let global = Self::instance();
23212
0
        // vkGetDeviceAccelerationStructureCompatibilityKHR
23213
0
        let device_info = global.get_device_info(device).unwrap();
23214
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23215
0
        let layer_result = device_info
23216
0
            .customized_info
23217
0
            .borrow()
23218
0
            .hooks()
23219
0
            .get_device_acceleration_structure_compatibility_khr(
23220
0
                unsafe { p_version_info.as_ref() }.unwrap(),
23221
0
            );
23222
0
        match layer_result {
23223
0
            LayerResult::Handled(res) => {
23224
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
23225
0
            }
23226
            LayerResult::Unhandled => unsafe {
23227
0
                (dispatch_table.get_device_acceleration_structure_compatibility_khr)(
23228
0
                    device,
23229
0
                    p_version_info,
23230
0
                    p_compatibility,
23231
0
                )
23232
            },
23233
        }
23234
0
    }
23235
0
    extern "system" fn get_acceleration_structure_build_sizes_khr(
23236
0
        device: vk::Device,
23237
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
23238
0
        p_build_info: *const vk::AccelerationStructureBuildGeometryInfoKHR,
23239
0
        p_max_primitive_counts: *const u32,
23240
0
        p_size_info: *mut vk::AccelerationStructureBuildSizesInfoKHR,
23241
0
    ) {
23242
0
        let global = Self::instance();
23243
0
        // vkGetAccelerationStructureBuildSizesKHR
23244
0
        let device_info = global.get_device_info(device).unwrap();
23245
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
23246
        #[allow(clippy::unnecessary_cast)]
23247
0
        let layer_result = device_info
23248
0
            .customized_info
23249
0
            .borrow()
23250
0
            .hooks()
23251
0
            .get_acceleration_structure_build_sizes_khr(
23252
0
                build_type,
23253
0
                unsafe { p_build_info.as_ref() }.unwrap(),
23254
0
                if p_max_primitive_counts.is_null() {
23255
0
                    None
23256
                } else {
23257
0
                    Some(unsafe {
23258
0
                        std::slice::from_raw_parts(
23259
0
                            p_max_primitive_counts,
23260
0
                            unsafe { p_build_info.as_ref() }.unwrap().geometry_count as usize,
23261
0
                        )
23262
0
                    })
23263
                },
23264
0
                unsafe { p_size_info.as_mut() }.unwrap(),
23265
0
            );
23266
0
        match layer_result {
23267
0
            LayerResult::Handled(res) => res,
23268
            LayerResult::Unhandled => unsafe {
23269
0
                (dispatch_table.get_acceleration_structure_build_sizes_khr)(
23270
0
                    device,
23271
0
                    build_type,
23272
0
                    p_build_info,
23273
0
                    p_max_primitive_counts,
23274
0
                    p_size_info,
23275
0
                )
23276
            },
23277
        }
23278
0
    }
23279
0
    extern "system" fn cmd_trace_rays_khr(
23280
0
        command_buffer: vk::CommandBuffer,
23281
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23282
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23283
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23284
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23285
0
        width: u32,
23286
0
        height: u32,
23287
0
        depth: u32,
23288
0
    ) {
23289
0
        let global = Self::instance();
23290
0
        // vkCmdTraceRaysKHR
23291
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23292
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23293
0
        let layer_result = device_info
23294
0
            .customized_info
23295
0
            .borrow()
23296
0
            .hooks()
23297
0
            .cmd_trace_rays_khr(
23298
0
                command_buffer,
23299
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
23300
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
23301
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
23302
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
23303
0
                width,
23304
0
                height,
23305
0
                depth,
23306
0
            );
23307
0
        match layer_result {
23308
0
            LayerResult::Handled(res) => res,
23309
            LayerResult::Unhandled => unsafe {
23310
0
                (dispatch_table.cmd_trace_rays_khr)(
23311
0
                    command_buffer,
23312
0
                    p_raygen_shader_binding_table,
23313
0
                    p_miss_shader_binding_table,
23314
0
                    p_hit_shader_binding_table,
23315
0
                    p_callable_shader_binding_table,
23316
0
                    width,
23317
0
                    height,
23318
0
                    depth,
23319
0
                )
23320
            },
23321
        }
23322
0
    }
23323
0
    extern "system" fn create_ray_tracing_pipelines_khr(
23324
0
        device: vk::Device,
23325
0
        deferred_operation: vk::DeferredOperationKHR,
23326
0
        pipeline_cache: vk::PipelineCache,
23327
0
        create_info_count: u32,
23328
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoKHR,
23329
0
        p_allocator: *const vk::AllocationCallbacks,
23330
0
        p_pipelines: *mut vk::Pipeline,
23331
0
    ) -> vk::Result {
23332
0
        let global = Self::instance();
23333
0
        // vkCreateRayTracingPipelinesKHR
23334
0
        let device_info = global.get_device_info(device).unwrap();
23335
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23336
0
        #[allow(clippy::unnecessary_cast)]
23337
0
        let layer_result = device_info
23338
0
            .customized_info
23339
0
            .borrow()
23340
0
            .hooks()
23341
0
            .create_ray_tracing_pipelines_khr(
23342
0
                deferred_operation,
23343
0
                pipeline_cache,
23344
0
                unsafe { std::slice::from_raw_parts(p_create_infos, create_info_count as usize) },
23345
0
                unsafe { p_allocator.as_ref() },
23346
0
            );
23347
0
        match layer_result {
23348
0
            LayerResult::Handled(res) => match res {
23349
0
                Ok(res) => {
23350
0
                    unsafe {
23351
0
                        std::slice::from_raw_parts_mut(
23352
0
                            p_pipelines,
23353
0
                            create_info_count.try_into().unwrap(),
23354
0
                        )
23355
0
                    }
23356
0
                    .copy_from_slice(&res);
23357
0
                    vk::Result::SUCCESS
23358
                }
23359
0
                Err(e) => e,
23360
            },
23361
            LayerResult::Unhandled => unsafe {
23362
0
                (dispatch_table.create_ray_tracing_pipelines_khr)(
23363
0
                    device,
23364
0
                    deferred_operation,
23365
0
                    pipeline_cache,
23366
0
                    create_info_count,
23367
0
                    p_create_infos,
23368
0
                    p_allocator,
23369
0
                    p_pipelines,
23370
0
                )
23371
            },
23372
        }
23373
0
    }
23374
0
    extern "system" fn get_ray_tracing_capture_replay_shader_group_handles_khr(
23375
0
        device: vk::Device,
23376
0
        pipeline: vk::Pipeline,
23377
0
        first_group: u32,
23378
0
        group_count: u32,
23379
0
        data_size: usize,
23380
0
        p_data: *mut c_void,
23381
0
    ) -> vk::Result {
23382
0
        let global = Self::instance();
23383
0
        // vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
23384
0
        let device_info = global.get_device_info(device).unwrap();
23385
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23386
0
        let layer_result = device_info
23387
0
            .customized_info
23388
0
            .borrow()
23389
0
            .hooks()
23390
0
            .get_ray_tracing_capture_replay_shader_group_handles_khr(
23391
0
                pipeline,
23392
0
                first_group,
23393
0
                group_count,
23394
0
            );
23395
0
        match layer_result {
23396
0
            LayerResult::Handled(res) => match res {
23397
0
                Ok(res) => {
23398
0
                    let p_data = p_data as *mut u8;
23399
0
                    unsafe { std::slice::from_raw_parts_mut(p_data, data_size) }
23400
0
                        .copy_from_slice(&res);
23401
0
                    vk::Result::SUCCESS
23402
                }
23403
0
                Err(e) => e,
23404
            },
23405
            LayerResult::Unhandled => unsafe {
23406
0
                (dispatch_table.get_ray_tracing_capture_replay_shader_group_handles_khr)(
23407
0
                    device,
23408
0
                    pipeline,
23409
0
                    first_group,
23410
0
                    group_count,
23411
0
                    data_size,
23412
0
                    p_data,
23413
0
                )
23414
            },
23415
        }
23416
0
    }
23417
0
    extern "system" fn cmd_trace_rays_indirect_khr(
23418
0
        command_buffer: vk::CommandBuffer,
23419
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23420
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23421
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23422
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23423
0
        indirect_device_address: vk::DeviceAddress,
23424
0
    ) {
23425
0
        let global = Self::instance();
23426
0
        // vkCmdTraceRaysIndirectKHR
23427
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23428
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23429
0
        let layer_result = device_info
23430
0
            .customized_info
23431
0
            .borrow()
23432
0
            .hooks()
23433
0
            .cmd_trace_rays_indirect_khr(
23434
0
                command_buffer,
23435
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
23436
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
23437
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
23438
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
23439
0
                indirect_device_address,
23440
0
            );
23441
0
        match layer_result {
23442
0
            LayerResult::Handled(res) => res,
23443
            LayerResult::Unhandled => unsafe {
23444
0
                (dispatch_table.cmd_trace_rays_indirect_khr)(
23445
0
                    command_buffer,
23446
0
                    p_raygen_shader_binding_table,
23447
0
                    p_miss_shader_binding_table,
23448
0
                    p_hit_shader_binding_table,
23449
0
                    p_callable_shader_binding_table,
23450
0
                    indirect_device_address,
23451
0
                )
23452
            },
23453
        }
23454
0
    }
23455
0
    extern "system" fn get_ray_tracing_shader_group_stack_size_khr(
23456
0
        device: vk::Device,
23457
0
        pipeline: vk::Pipeline,
23458
0
        group: u32,
23459
0
        group_shader: vk::ShaderGroupShaderKHR,
23460
0
    ) -> vk::DeviceSize {
23461
0
        let global = Self::instance();
23462
0
        // vkGetRayTracingShaderGroupStackSizeKHR
23463
0
        let device_info = global.get_device_info(device).unwrap();
23464
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23465
0
        let layer_result = device_info
23466
0
            .customized_info
23467
0
            .borrow()
23468
0
            .hooks()
23469
0
            .get_ray_tracing_shader_group_stack_size_khr(pipeline, group, group_shader);
23470
0
        match layer_result {
23471
0
            LayerResult::Handled(res) => res,
23472
            LayerResult::Unhandled => unsafe {
23473
0
                (dispatch_table.get_ray_tracing_shader_group_stack_size_khr)(
23474
0
                    device,
23475
0
                    pipeline,
23476
0
                    group,
23477
0
                    group_shader,
23478
0
                )
23479
            },
23480
        }
23481
0
    }
23482
0
    extern "system" fn cmd_set_ray_tracing_pipeline_stack_size_khr(
23483
0
        command_buffer: vk::CommandBuffer,
23484
0
        pipeline_stack_size: u32,
23485
0
    ) {
23486
0
        let global = Self::instance();
23487
0
        // vkCmdSetRayTracingPipelineStackSizeKHR
23488
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23489
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23490
0
        let layer_result = device_info
23491
0
            .customized_info
23492
0
            .borrow()
23493
0
            .hooks()
23494
0
            .cmd_set_ray_tracing_pipeline_stack_size_khr(command_buffer, pipeline_stack_size);
23495
0
        match layer_result {
23496
0
            LayerResult::Handled(res) => res,
23497
            LayerResult::Unhandled => unsafe {
23498
0
                (dispatch_table.cmd_set_ray_tracing_pipeline_stack_size_khr)(
23499
0
                    command_buffer,
23500
0
                    pipeline_stack_size,
23501
0
                )
23502
            },
23503
        }
23504
0
    }
23505
0
    extern "system" fn cmd_draw_mesh_tasks_ext(
23506
0
        command_buffer: vk::CommandBuffer,
23507
0
        group_countx: u32,
23508
0
        group_county: u32,
23509
0
        group_countz: u32,
23510
0
    ) {
23511
0
        let global = Self::instance();
23512
0
        // vkCmdDrawMeshTasksEXT
23513
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23514
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23515
0
        let layer_result = device_info
23516
0
            .customized_info
23517
0
            .borrow()
23518
0
            .hooks()
23519
0
            .cmd_draw_mesh_tasks_ext(command_buffer, group_countx, group_county, group_countz);
23520
0
        match layer_result {
23521
0
            LayerResult::Handled(res) => res,
23522
            LayerResult::Unhandled => unsafe {
23523
0
                (dispatch_table.cmd_draw_mesh_tasks_ext)(
23524
0
                    command_buffer,
23525
0
                    group_countx,
23526
0
                    group_county,
23527
0
                    group_countz,
23528
0
                )
23529
            },
23530
        }
23531
0
    }
23532
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_ext(
23533
0
        command_buffer: vk::CommandBuffer,
23534
0
        buffer: vk::Buffer,
23535
0
        offset: vk::DeviceSize,
23536
0
        draw_count: u32,
23537
0
        stride: u32,
23538
0
    ) {
23539
0
        let global = Self::instance();
23540
0
        // vkCmdDrawMeshTasksIndirectEXT
23541
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23542
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23543
0
        let layer_result = device_info
23544
0
            .customized_info
23545
0
            .borrow()
23546
0
            .hooks()
23547
0
            .cmd_draw_mesh_tasks_indirect_ext(command_buffer, buffer, offset, draw_count, stride);
23548
0
        match layer_result {
23549
0
            LayerResult::Handled(res) => res,
23550
            LayerResult::Unhandled => unsafe {
23551
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_ext)(
23552
0
                    command_buffer,
23553
0
                    buffer,
23554
0
                    offset,
23555
0
                    draw_count,
23556
0
                    stride,
23557
0
                )
23558
            },
23559
        }
23560
0
    }
23561
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_ext(
23562
0
        command_buffer: vk::CommandBuffer,
23563
0
        buffer: vk::Buffer,
23564
0
        offset: vk::DeviceSize,
23565
0
        count_buffer: vk::Buffer,
23566
0
        count_buffer_offset: vk::DeviceSize,
23567
0
        max_draw_count: u32,
23568
0
        stride: u32,
23569
0
    ) {
23570
0
        let global = Self::instance();
23571
0
        // vkCmdDrawMeshTasksIndirectCountEXT
23572
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23573
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23574
0
        let layer_result = device_info
23575
0
            .customized_info
23576
0
            .borrow()
23577
0
            .hooks()
23578
0
            .cmd_draw_mesh_tasks_indirect_count_ext(
23579
0
                command_buffer,
23580
0
                buffer,
23581
0
                offset,
23582
0
                count_buffer,
23583
0
                count_buffer_offset,
23584
0
                max_draw_count,
23585
0
                stride,
23586
0
            );
23587
0
        match layer_result {
23588
0
            LayerResult::Handled(res) => res,
23589
            LayerResult::Unhandled => unsafe {
23590
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_ext)(
23591
0
                    command_buffer,
23592
0
                    buffer,
23593
0
                    offset,
23594
0
                    count_buffer,
23595
0
                    count_buffer_offset,
23596
0
                    max_draw_count,
23597
0
                    stride,
23598
0
                )
23599
            },
23600
        }
23601
0
    }
23602
}